首页 > 解决方案 > 使用 pd.to_dict,获取具有在 Pandas 中具有重复索引的列键/值对的 dict 列表

问题描述

我有带有多索引的数据框,我需要将其格式化为dict使用列表pd.to_dict或任何其他功能

df = pd.DataFrame(index=[0,0,1,1], data={('c', 'a'):[10,15, 20, 50], ('c', 'b'):[15,25, 20, 30]})

    c    
    a   b
0  10  15
0  15  25
1  20  20
1  50  30

异常输出:

{0: [{(c,a):10, (c,b):15}, {(c,a):15, (c,b):25}], 1: [{(c,a):20, (c,b):20}, {(c,a):50, (c,b):30}]}

有什么最佳方法可以实现这一目标吗?

标签: pythonpandas

解决方案


我们可以DataFrame.to_dict为索引中的每个唯一值使用DataFrame.groupby.

my_dict = {i : group.to_dict('records') for i, group in df.groupby(level=0)}

输出

{0: [{('c', 'a'): 10, ('c', 'b'): 15}, {('c', 'a'): 15, ('c', 'b'): 25}],
 1: [{('c', 'a'): 20, ('c', 'b'): 20}, {('c', 'a'): 50, ('c', 'b'): 30}]}

推荐阅读