我对熊猫柱上的多重条件有疑问。我有以下数据框:
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。
感谢任何建议
答案 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