【发布时间】:2019-12-19 23:21:32
【问题描述】:
我有一个包含购买金额和日期的客户数据框。在这种情况下,我有两个客户,A 和 B:
df1 = pd.DataFrame(index=pd.date_range('2015-04-24', periods = 50)).assign(purchase=[x for x in range(51,101)])
df2 = pd.DataFrame(index=pd.date_range('2015-04-28', periods = 50)).assign(purchase=[x for x in range(0,50)])
df3 = pd.concat([df1,df2], keys=['A','B'])
df3 = df3.rename_axis(['user','date']).reset_index()
print(df3.head())
user date purchase
0 A 2015-04-24 51
1 A 2015-04-25 52
2 A 2015-04-26 53
3 A 2015-04-27 54
4 A 2015-04-28 55
我只想知道用户的平均每周支出,一周是从周一到周日。预期结果:
user average_weekly_spend
0 A 51
1 B 60
但是我不知道如何将其设置为星期一到星期日。现在我使用resample 和7D。我认为,这意味着所有客户都会对一周有不同的定义。我相信从第一次购买等到需要 7 天。所以每个客户都会有不同的开始日期。
df3.groupby('user').apply(lambda x: x.resample('7D', on='date').mean()).groupby('user')['purchase'].mean()
user
A 78.125
B 27.125
是否可以为所有客户将我自己的一周定义为周一至周日?
【问题讨论】: