如何解决具有移动平均线的多个 GROUPBY多个条件
我正在为 Pandas 中的多个 GROUPBY 和 MOVING AVERAGE 苦苦挣扎。 我有以下数据框:
日期 |项目 |价格 |用户 ID | Nb_purchases
这基本上显示了用户每天对每件商品进行的购买次数。 商品的价格不是唯一的,但会因天而异。
我需要做四个不同的 GROUPBY。
- 'Nb_purchase 的总和':每天,每件
- 'COUNT disTINCT User_id':每天每件商品
- 'MOVING AVG of SUM of Nb_purchases':我想知道该商品在过去 7 天内(不考虑价格变化)且不包括当前日期的平均购买量
- 'MOVING AVG of nb_purchases_per_user' :我想知道过去 7 天(不考虑价格变化)且不包括当前日期的商品 nb_purchase_per_user 的平均值
为了进行最后的计算,我需要添加一个测量值,即 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()
但它说: “类型错误:插入列的索引与框架索引不兼容”
我认为这可能是一个多索引问题,但我不明白为什么 reset_index() 不能解决问题。
你能帮我写一段代码来计算两个移动平均线吗?
先谢谢大家。
最好的问候, 安德烈斯
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。