Pandas:从用户第一笔交易开始,每6个月按客户利润分组并求和

brccelvz  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(165)

我有这样一个数据集:
| 客户ID|日期|利润|
| - -|- -|- -|
| 一个|2018年4月13日|十点整|
| 一个|2018年4月26日|十三点二十七分|
| 一个|2018年10月23日|十五点整|
| 2个|2017年1月1日|七点三十九分|
| 2个|2017年7月5日|九点九九分|
| 2个|2017年7月7日|十点零一分|
| 三个|2019年5月4日|三十点三十分|
我想groupby和总和利润,每6个月,从每个用户的第一次交易开始.
理想情况下,输出应如下所示:
| 客户ID|日期|利润|
| - -|- -|- -|
| 一个|2018年4月13日|二十三点二十七分|
| 一个|2018年10月13日|十五点整|
| 2个|2017年1月1日|七点三十九分|
| 2个|2017年7月1日|20点整|
| 三个|2019年5月4日|三十点三十分|
我似乎最接近这个问题是通过使用:但是,从用户的第一个交易日开始,这似乎并不是一个总和。
如果更改日期是不可能的(例如,客户2的日期是7/1/2017,而不是7/5/2017),那么至少总结利润,使其基于每个用户自己的6个月购买旅程将是非常有帮助的。谢谢!

0mkxixxg

0mkxixxg1#

在你找到更完美的解决方案之前我可以在月初给你。

df["Date"] = pd.to_datetime(df["Date"], format="%m/%d/%Y")
df = (
    df
    .set_index("Date")
    .groupby(["Customer ID"])
    .Profit
    .resample("6MS")
    .sum()
    .reset_index(name="Profit")
)
print(df)

   Customer ID       Date  Profit
0            1 2018-04-01   23.27
1            1 2018-10-01   15.00
2            2 2017-01-01    7.39
3            2 2017-07-01   20.00
4            3 2019-05-01   30.30

相关问题