[英]Finding a cumulative sum of unique values in a pandas dataframe column
在此示例 df 中,我正在努力找到按天计算的收入值的累积总和。 我想看到一周中每一天的累积值加起来,所以星期一 + 星期一。 周二+周二。 等等
示例 df:
df = pd.DataFrame({'day': ['Mon','Tue','Wed', 'Mon', 'Tue', 'Wed'],
'date': ['2002-01-02', '2002-01-03', '2002-01-04', '2002-01-08', '2002-01-09', '2002-01-10'],
'income': [40, 60, 40, 100, 55, 32]
})
我想在这个 df 中添加一个 cumsum() 列,它只会增加每天的收入。
我的尝试只是在绘图表中累积添加每一行:
df['cum_income_by_day'] = df['income'].cumsum()
Monday = df[df['day']] == 'Monday'
sn.lineplot(data = Monday, x="Date", y="cum_income_by_day")
尝试 2 抛出一个有效的“设置复制”警告,我的结果不准确 - 不确定发生了什么,但我可以看到前几个值的累积是错误的。
Monday = df[df['day'] == 'Monday']
df['cum_income_by_day'] = Monday['income'].cumsum()
我想也许答案在 groupby 中,因为我想每天都这样做,而不仅仅是星期一,但我只得到一个累积值。 我尝试了一个 for 循环(我是新手,我还在学习)但无法破解它。 非常感谢任何建议。
理想的输出如下所示:
如果您喜欢我的问题,请投票,这样我就有足够的积分来投票您的答案。
你必须先groupby
!
>>> df['cumsum_income'] = df.groupby('day')['income'].cumsum()
day date income cumsum_income
0 Mon 2002-01-02 40 40
1 Tue 2002-01-03 60 60
2 Wed 2002-01-04 40 40
3 Mon 2002-01-08 100 140
4 Tue 2002-01-09 55 115
5 Wed 2002-01-10 32 72
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.