我有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
有没有一种方法可以分组,既可以按年度汇总销售额,也可以创建用户的滚动总数,因为我的用户栏由新用户和前一天的用户组成,所以基本上是按年度分组,汇总销售额,然后汇总下一天的用户-前一天用户
谢谢
使用您提供的数据帧:
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