首页 > 解决方案 > 具有移动平均线的多个 GROUPBY(多个条件)

问题描述

我在 Pandas 中与多个 GROUPBY 和 MOVING AVERAGE 作斗争。我有以下数据框:

日期 | 项目 | 价格 | 用户ID | Nb_purchases

这基本上显示了用户每天每件商品的购买次数。一件商品的价格不是唯一的,但它会根据日期而变化。

我需要做四种不同的 GROUPBY。

为了进行最后一次计算,我需要添加一个测量值,即 nb_purchases_per_user:(Nb_purchases / COUNT DISTINCT User_id 的总和)。

最后,我应该每天为每个项目获得一个唯一的行,其中包含以下信息:

日期 | 项目 | 价格 | Sum_nb_purchases | COUNTD_User_id | nb_purchases_per_user | Past_7_days_AVG_nb_purchases | Past_7_days_AVG_nb_purchases_per_user

这是我的前 2 个 Groupbys 代码和度量“nb_purchases_per_user”的计算:

table = table.groupby(["date", "item", "price"]).agg({'nb_purchases' : 'sum', 'user_id' : 'nunique'}).reset_index() 
table['nb_purchase_per_user '] = table.nb_purchases/ table.user_id

到此为止,它有效。

然后,当我尝试做两条移动平均线时,我的问题就开始了。

我试过这段代码:

table['7d_avg_purchases'] = table.groupby(['date','item '])['nb_purchases'].rolling(window=7).mean().reset_index()

但它说:“TypeError:插入列的索引与框架索引不兼容”

我认为这可能是一个多索引问题,但我不明白为什么 reset_index() 不能解决问题。

你能帮我写一段代码来计算两条移动平均线吗?

提前感谢大家。

最好的问候, 安德烈斯

标签: pythonpandasgroup-bymoving-average

解决方案


推荐阅读