繁体   English   中英

在 pandas 数据框列中查找唯一值的累积总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM