python - 通过时间查找每个项目和 ID 的平均值(Python)
问题描述
问题如下。假设我有一个这样的数据框:
物品 | 事件 | 销售量 |
---|---|---|
1 | 一个 | 130 |
1 | 乙 | 156 |
1 | C | 108 |
2 | 乙 | 150 |
2 | D | 118 |
... | ... | ... |
在这个数据帧中,事件A
首先是时间,然后是 B,然后是 C,依此类推。我现在想要一个平均每个 item-id 组合随着时间的推移。这意味着对于项目 1 事件 A,平均值仅为 130。对于项目 1 和事件 B,平均值应为 (130+156)/2 = 143。但对于项目 2,事件 B,平均值为 150,对于项目 2 和事件 D,平均值为 (130+118)/2 = 124。
所以结果应该是这样的:
物品 | 事件 | 销售量 |
---|---|---|
1 | 一个 | 130 |
1 | 乙 | 143 |
1 | C | 131.33 |
2 | 乙 | 150 |
2 | D | 124 |
... | ... | ... |
这可能没有循环吗?我们可以通过某种方式与一个小组一起做这个吗?
提前致谢!
解决方案
使用Expanding.mean
withSeries.reset_index
删除第一级MultiIndex
以正确对齐新列:
df['new'] = df.groupby('item')['sales'].expanding().mean().reset_index(level=0, drop=True)
print (df)
item event sales new
0 1 A 130 130.000000
1 1 B 156 143.000000
2 1 C 108 131.333333
3 2 B 150 150.000000
4 2 D 118 134.000000
推荐阅读
- rabbitmq - Azure 服务总线、AWS SNS、RabbitMQ -> 所有订阅者都收到消息?
- java - 在新 IDE 中读取 JSON 文件失败
- c# - 每当用户请求更改密码或由用户管理器自动处理时,我是否必须手动更新安全标记?
- windows - 如何使用 psservice.exe 列出准确的服务名称匹配
- docker - 如何在 Kubernetes (GCP) 中预先配置 Pod 的 IP 地址?
- ios - Swift - iOS - 修改后退按钮路径
- angular - 如何以角度验证垫选择列表?
- java - Java UML 图到类
- python - 寻找 xy 坐标
- tkinter - tkinter:帧之间的切换无法正常工作