python - 具有移动平均线的多个 GROUPBY(多个条件)
问题描述
我在 Pandas 中与多个 GROUPBY 和 MOVING AVERAGE 作斗争。我有以下数据框:
日期 | 项目 | 价格 | 用户ID | Nb_purchases
这基本上显示了用户每天每件商品的购买次数。一件商品的价格不是唯一的,但它会根据日期而变化。
我需要做四种不同的 GROUPBY。
- 'SUM of Nb_purchase':每天,每件商品
- 'COUNT DISTINCT User_id':每天每件商品
- 'MOVING AVG of SUM of Nb_purchases':我想知道过去 7 天内该商品的平均购买量 nb(不考虑价格变化),不包括当前日期
- '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()
但它说:“TypeError:插入列的索引与框架索引不兼容”
我认为这可能是一个多索引问题,但我不明白为什么 reset_index() 不能解决问题。
你能帮我写一段代码来计算两条移动平均线吗?
提前感谢大家。
最好的问候, 安德烈斯
解决方案
推荐阅读
- mysql - 我们可以使用 JPA Repository 从 Mysql View 中提取/获取数据吗?如果是怎么办?
- javascript - 如何检查组件反应中浪费的渲染
- api-platform.com - 如何覆盖实体多元化?
- php - 如何在资源集合中获取分页链接 - Laravel 5.7.19
- django - URL 配置的 Django 迁移问题
- excel - 从遍历行的 if 语句返回文本值
- javascript - 有没有办法检查我在两个输入之间选择了哪个 input="file" ?
- c++ - 不期望将 .ply 文件转换为 .pcd 文件
- python - 关于为股票市场算法循环遍历 Pandas 数据框的问题
- vim - after/ftplugin/fortran.vim 中的特定设置不起作用