微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有移动平均线的多个 GROUPBY多个条件

如何解决具有移动平均线的多个 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 举报,一经查实,本站将立刻删除。