Ale*_*ban 5 python reverse sum pandas cumsum
假设我有以下数据帧:
C1 C2 C3 C4
0 1 2 3 0
1 4 0 0 0
2 0 0 0 3
3 0 3 0 0
Run Code Online (Sandbox Code Playgroud)
然后我想添加另一列,使其显示从右边连续出现的零值列的数量.新专栏将是:
Cnew
0 1
1 3
2 0
3 2
Run Code Online (Sandbox Code Playgroud)
您可以使用:
df['new'] = df.iloc[:,::-1].cumsum(axis=1).eq(0).sum(axis=1)
print (df)
C1 C2 C3 C4 new
0 1 2 3 0 1
1 4 0 0 0 3
2 0 0 0 3 0
3 0 3 0 0 2
Run Code Online (Sandbox Code Playgroud)
print (df.iloc[:,::-1])
C4 C3 C2 C1
0 0 3 2 1
1 0 0 0 4
2 3 0 0 0
3 0 0 3 0
print (df.iloc[:,::-1].cumsum(axis=1))
C4 C3 C2 C1
0 0 3 5 6
1 0 0 0 4
2 3 3 3 3
3 0 0 3 3
print (df.iloc[:,::-1].cumsum(axis=1).eq(0))
C4 C3 C2 C1
0 True False False False
1 True True True False
2 False False False False
3 True True False False
Run Code Online (Sandbox Code Playgroud)