gpt4 book ai didi

python - 根据Python中数据帧每列的最后一个非零值计算累积和

转载 作者:行者123 更新时间:2023-12-01 07:43:16 24 4
gpt4 key购买 nike

假设我下面有一个数据框。对于每一列,我都有许多零和一些非零值。我想计算每列的累积和,但我希望在出现零值时重置累积和。

我的原始数据框:

pd.DataFrame({'a':[1,0,1,0,1,0,1,1],'b':[1,0,0,0,0,1,1,1]})

a b
0 1 1
1 0 0
2 1 0
3 0 0
4 1 0
5 0 1
6 1 1
7 1 1

我想要这样的累积总和:

   a  b
0 1 1
1 0 0
2 1 0
3 0 0
4 1 0
5 0 1
6 1 2
7 2 3

是否可以在Python中不使用循环来完成它?谢谢!

最佳答案

一种方法是为每列创建自定义石斑鱼,检查元素是否与 0 相等,并采用 cumsum生成的一系列 bool 值,并使用 cumsum 进行转换:

g = df.eq(0).cumsum()
df.apply(lambda x: x.groupby(g[x.name]).transform('cumsum'))

a b
0 1 1
1 0 0
2 1 0
3 0 0
4 1 0
5 0 1
6 1 2
7 2 3

关于python - 根据Python中数据帧每列的最后一个非零值计算累积和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56582427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com