使用 pd.to_dict,获取具有列键/值对的字典列表,该字典在 Pandas 中具有重复索引



我有多索引的数据帧,我需要使用pd.to_dict或任何其他函数将其格式化为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}]}

有没有实现此目的的最佳方法?

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

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}]}

我会按索引分组作为外部循环,然后在每个组上使用迭代行

{idx: [v.to_dict() for _, v in grp.iterrows()] for idx, grp in df.groupby(level=0)}

level=0用于引用未命名的索引级别

最新更新