Pandas,在另一行的单元格上使用.loc

时间:2016-02-11 15:30:53

标签: pandas conditional loc

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

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

df['true'] = df.loc[:,['max','value']].min(axis=1)添加' true'专栏

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

但我还想在专栏中添加条件' true'根据“最大值”中的单元格值两排了。像.loc一样,我想用

之类的东西来检查这个条件的整个数据帧
df.loc[df['max'] - 2 = 0,'true'] = 0

由于大熊猫非常擅长查询,我不想写一个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

1 个答案:

答案 0 :(得分: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