我希望基于几个条件来操纵大量数据。一个基于同一行,而另一个基于来自不同行的单元。
例如我有一个这样的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
答案 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