簡體   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