小编dap*_*neg的帖子

在 Python Pandas 中使用 cumsum 和 groupby 并在值为 0 时重置 cumsum

我对python比较陌生。我尝试为每个客户端计算累积总和,以查看相应的不活动月份(标志:1 或 0)。因此,当我们有一个 0 时,需要重置 1 的累积总和。当我们有一个新客户时,也需要重置。请参见下面的示例,其中 a 是客户列,b 是日期。

经过一番研究,我发现了问题“Cumsum reset at NaN”和“In Python Pandas using cumsum with groupby”。我想我有点需要把它们放在一起。将 'Cumsum reset at NaN' 的代码调整为向 0 的重置是成功的:

cumsum = v.cumsum().fillna(method='pad')
reset = -cumsum[v.isnull() !=0].diff().fillna(cumsum)
result = v.where(v.notnull(), reset).cumsum()
Run Code Online (Sandbox Code Playgroud)

但是,我没有成功添加 groupby。我的数还在继续……

所以,一个数据集应该是这样的: import pandas as pd

df =  pd.DataFrame({'a' : [1,1,1,1,1,1,1,2,2,2,2,2,2,2], 
                    'b' : [1/15,2/15,3/15,4/15,5/15,6/15,1/15,2/15,3/15,4/15,5/15,6/15], 
                    'c' : [1,0,1,0,1,1,0,1,1,0,1,1,1,1]})
Run Code Online (Sandbox Code Playgroud)

这应该会产生一个包含 a、b、c 和 d 列的数据框

'd' : [1,0,1,0,1,2,0,1,2,0,1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

请注意,我有一个非常大的数据集,因此计算时间非常重要。

感谢你们对我的帮助

group-by python-3.x pandas cumsum

4
推荐指数
1
解决办法
2386
查看次数

标签 统计

cumsum ×1

group-by ×1

pandas ×1

python-3.x ×1