1

我希望根据几个条件来操作大量数据。一个基于同一行,而另一个基于不同行的单元格。

例如我有一个这样的df,我用过

df['true'] = df.loc[:,['max','value']].min(axis=1)添加“真”列

max    value   true
0,00    3,00    0,00
0,00    4,00    0,00
0,00    4,00    0,00
0,00    2,00    0,00
3,00    3,00    3,00
3,00    1,00    1,00
3,00    4,00    3,00
3,00    1,00    1,00
3,00    4,00    3,00
3,00    0,00    0,00

但我还想根据“最大”两行中单元格的值向“真”列添加一个条件。像 .loc 我想用类似的东西检查整个数据框的这种情况

df.loc[df['max'] - 2 = 0,'true'] = 0

而且由于 pandas 非常擅长查询,我不想编写 if 语句来迭代整个数据帧。

在这种情况下,输出将是:

max    value   true
0,00    3,00    0,00
0,00    4,00    0,00
0,00    4,00    0,00
0,00    2,00    0,00
3,00    3,00    **0,00**
3,00    1,00    **0,00**
3,00    4,00    3,00
3,00    1,00    1,00
3,00    4,00    3,00
3,00    0,00    0,00

有什么建议么?

谢谢

Solution thx @EdChum = 
df.loc[df['max'].shift(+ 2) == 0,'true'] = 0
4

1 回答 1

0

我认为您需要shift使用参数periods = 2

 df.loc[df['max'].shift(periods = 2) == 0,'true'] = 0
print df
   max  value  true
0    0      3     0
1    0      4     0
2    0      4     0
3    0      2     0
4    3      3     0
5    3      1     0
6    3      4     3
7    3      1     1
8    3      4     3
9    3      0     0
于 2016-02-11T15:37:53.450 回答