我有一个 pandas 数据框,我正在尝试计算每个数字之前零的数量,直到出现非零数字并将其捕获到下一列中。我如何使用 Pandas 执行此操作?
这就是输出需要在 zeroCumulative
列中的方式。例如,101
之前的零个数是0
,73
之前的零个数是3
等等。还需要计算任何零之前的零数。
value zeroCumulative
70
127 0
101 0
0 0
0 1
0 2
73 3
0 0
55 1
0 0
提前致谢!
最佳答案
为了提高性能,可以使用矢量化解决方案,这类似于 this解决方案 Series.shift
列并通过 0
进行比较:
a = df['value'].shift().eq(0)
b = a.cumsum()
df['new'] = b.sub(b.mask(a).ffill().fillna(0)).astype(int)
print (df)
value zeroCumulative new
0 70 0 0
1 127 0 0
2 101 0 0
3 0 0 0
4 0 1 1
5 0 2 2
6 73 3 3
7 0 0 0
8 55 1 1
9 0 0 0
关于python - 依次计算数据帧中两个非零数之间的零数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60734125/