【发布时间】:2017-02-06 01:23:21
【问题描述】:
我对 python 比较陌生。 我尝试为每个客户获取一个累积总和,以查看相应的不活动月份(标志:1 或 0)。因此,当我们有一个 0 时,需要重置 1 的累积总和。当我们有一个新客户端时,也需要进行重置。请参阅下面的示例,其中 a 是客户列,b 是日期。
经过一些研究,我发现了“Cumsum 在 NaN 处重置”和“在 Python Pandas 中使用 cumsum 和 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()
但是,我没有成功添加 groupby。我的计数还在继续......
所以,数据集应该是这样的: 将熊猫导入为 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]})
这应该会产生一个包含 a、b、c 和 d 列的数据框,其中包含
'd' : [1,0,1,0,1,2,0,1,2,0,1,2,3,4]
请注意,我有一个非常大的数据集,因此计算时间非常重要。
谢谢你帮助我
【问题讨论】:
标签: python-3.x pandas group-by cumsum