首页 文章

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

提问于
浏览
1

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

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

由于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

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
    

相关问题