Pandas groupby分组返回列值而非索引的内置实现方案
解决方案
可以使用Pandas内置的apply + to_dict组合实现需求,无需手动编写字典推导式:
如果需要值为numpy数组格式,直接执行:
result = dx.apply(np.array).to_dict()
如果可以接受列表格式的分组数据,写法更简化:
result = dx.apply(list).to_dict()
说明
- 对SeriesGroupBy对象调用
apply方法时,会将每个分组的第1列数据传入指定的处理函数(np.array/list) - 处理后会返回一个以分组键(即原DataFrame第2列的取值)为索引的Series
- 再调用
to_dict()方法即可直接转为「键为分组值、值为对应分组的第1列数据」的字典,和手写字典推导式的效果完全一致 - 该写法比手动遍历
dx.groups调用get_group的性能更高,避免了重复的分组数据查询开销
内容的提问来源于stack exchange,提问作者Elsayeda
相关产品推荐
相关产品推荐

