python - 将多列上的 groupby 结果转换为字典列表
问题描述
我正在尝试将 pandas groupby 函数的结果转换为字典数组,然后可以在前端的 recharts 中使用。
代码运行:
data.groupby(['date','board_type'])['count'].sum()
groupby 的输出:
date board_type
2021-01-02 B1 11
B2 105
2021-01-03 B1 30
B2 73
2021-01-04 B1 188
转换后的预期输出:
[
{
date: 2021-01-02, B1: 11, B2: 105
},
{
date: 2021-01-03, B1: 30, B2: 73
},
{
date: 2021-01-04, B1: 188, B2: 0
}
]
我尝试使用 .to_dict 但这似乎不起作用。请建议如何实现这一点。
解决方案
你很亲密。关键是将 groupby 的结果转换回具有date
索引和B1
列的 DataFrame B2
(它是一个系列)。这可以使用unstack
. 然后你可以通过这种方式使用 DataFrame 得到你想要的to_dict
:
data.groupby(['date', 'board_type'])['count'].sum().unstack(fill_value=0).reset_index().to_dict(orient='records')
输出:
[{'date': '2021-01-02', 'B1': 11, 'B2': 105},
{'date': '2021-01-03', 'B1': 30, 'B2': 73},
{'date': '2021-01-04', 'B1': 188, 'B2': 0}]
推荐阅读
- google-chrome - WebRTC - 替换 RTCPeerConnection 轨道会增加接收端的流媒体延迟几分钟
- linux - 如何在 JENKINS 中从 Linux Master 启动 Windows Slave
- javascript - NgOnInit - IonWillEnter 错误:未捕获(承诺中):TypeError:无法读取 null 的属性“出口”
- javascript - 返回空 Observable 时未调用订阅回调
- powerbi - 仅使用 DAX 计算一个类别的类别总计百分比
- c# - 如何在 C# 中创建一个包含数组但不使用堆的结构?
- lstm - 用于 LSTM 的 Shap - 时间步长的特征
- java - 端点不可访问时的 Kubernetes 启动探测
- python - 我如何用python删除json的特定元素
- c++ - 将控制台应用打包到 MSIX 包中时出现错误 0x800B0100