[英]Group by sum with running calculation
我有 df 作為
Sales | Users | DT
40000 234 1/4/2018
500 100 1/23/2018
4000 555 2/4/2018
234 1000 6/4/2018
1000 2000 6/14/2018
50000 1200 9/12/2018
40000 234 1/14/2019
500 100 2/23/2019
2145 555 2/26/2019
344 1000 6/14/2019
1234 1233 6/21/2019
432 5000 11/12/2019
是否有方法可以按年份匯總銷售額並創建滾動用戶總數,因為我的用戶列由新用戶和上一個日期的用戶組成,所以基本上按年份分組,匯總銷售額,然后匯總下一個日期的用戶 - 上一個日期的用戶
謝謝
使用您提供的 dataframe:
import pandas as pd
df = pd.DataFrame(
{
"Sales": [40000, 500, 4000, 234, 1000, 50000, 40000, 500, 2145, 344, 1234, 432],
"Users": [234, 100, 555, 1000, 2000, 1200, 234, 100, 555, 1000, 1233, 5000],
"DT": ["1/4/2018", "1/23/2018", "2/4/2018", "6/4/2018", "6/14/2018", "9/12/2018", "1/14/2019", "2/23/2019", "2/26/2019", "6/14/2019", "6/21/2019", "11/12/2019"],
}
)
這是使用to_datetime和cumsum的一種方法:
df["DT"] = pd.to_datetime(df["DT"]).dt.year
df = (
df.groupby("DT")
.agg(sum)
.pipe(lambda df_: df_.assign(Users=df_["Users"].cumsum()))
.reset_index()
)
print(df)
# Output
DT Sales Users
0 2018 95734 5089
1 2019 44655 13211
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.