Python:pandas列上的多个条件问题

时间:2018-10-05 15:05:31

标签: python pandas conditional-statements

我对熊猫柱上的多重条件有疑问。我有以下数据框:

    A   B   C
0   0   9   0
1   1   8   0
2   1   9   0
3   1   5   1
4   1   9   1
5   1   8   1
6   -1  9   0
7   -1  5   -1
8   -1  7   -1

我要实现的目标如下:

1。)如果A> 0且B <6 C应该变成1,并保持该值直到A改变(B可以达到6以上)

2。)如果A <0和B <6 C应该变成-1,并保持该值直到A改变(B可以达到6以上)

任何建议如何做到无循环?

我正在努力如何在当前的A = 1或A = -1期间“记忆” B的状态低于6。

感谢任何建议

1 个答案:

答案 0 :(得分:1)

在满足您自己的条件时,使用np.select创建您的帮助列,然后我们对groupby进行bfill

s1=(df.A>0)&(df.B<6)
s2=(df.A<0)&(df.B<6)
df['v']=np.select([s1,s2],[1,-1])
df.v.replace(0,np.nan).groupby(df.A).ffill().fillna(0).astype(int)
Out[1023]: 
0    0
1    0
2    0
3    1
4    1
5    1
6    0
7   -1
8   -1