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

Pandas, Using .loc on a cell from another row

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

例如我有一个像这样的 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

但我还想根据 'max' 两行中单元格的值向列 'true' 添加条件。像 .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

我想你需要 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