pandas - Pandas Multi-index DataFrame:聚合组内的子组
问题描述
我有以下多索引数据框:
df = pd.DataFrame({
'cluster': [1, 1, 2, 1, 2, 2, 1, 3, 2],
'mark': [8, 5, 10, 20, 4, 1, 6, 4, 1],
'dt': ['2021-03-23', '2021-03-25', '2021-03-23', '2021-03-28', '2021-03-25', '2021-03-28', '2021-03-29', '2021-03-23', '2021-03-31']
})
df.set_index(['cluster', 'dt'], inplace=True)
df.sort_index(inplace=True)
df
标记 集群 dt 1 2021-03-23 8 2021-03-25 5 2021-03-28 20 2021-03-29 6 2 2021-03-23 10 2021-03-25 4 2021-03-28 1 2021-03-31 1 3 2021-03-23 4
我要做的是在每个索引组中生成每周子组的总和,例如
总分 集群 start_date_of_week 1 2021-03-21 13 2021-03-28 26 2 2021-03-21 14 2021-03-28 2 3 2021-03-23 4
我知道如何根据日期时间索引的频率生成组。我不知道如何使用一级多索引来做到这一点。有任何想法吗?
解决方案
确保索引的级别 1 是日期时间类型。然后你可以这样做:
print(
df.groupby(
[
pd.Grouper(level=0),
pd.Grouper(level=1, freq="W", label="left", closed="left"),
]
)["mark"]
.sum()
.to_frame()
)
印刷:
mark
cluster dt
1 2021-03-21 13
2021-03-28 26
2 2021-03-21 14
2021-03-28 2
3 2021-03-21 4
推荐阅读
- wpf - 将 MainWindowViewModel 中的命令绑定到 UserControl 中的 Slider 值更改事件
- c++ - 卷曲下载空 Zip 文件
- amazon-cloudformation - 无法删除使用云形成模板创建的 ec2-stack
- java - ARCore 手势旋转问题
- javascript - javascript通过按钮切换div样式显示
- python-3.x - 使用连接到 Ui_MainWindow 的主类之外的类
- asp.net-mvc - 某些 PoP 服务器的 Microsoft 标准 CDN URL 重定向不起作用
- python - Python Web 套接字仅发送 1 条消息
- php - 如何在数千个代码页中找到一个字符串?
- python - 在 Mac 上,尽管有教程,但我无法连接安装 Python GAMS API。给出版本错误