下午好。
我有一个带有复合索引的熊猫数据框。我需要遍历所有行并将每一行转换为形式的字典{название_колонки: значение}。
此外,这样索引列和简单的列都可以到达那里。
我整个早上都在阅读文档,我写了这个:
for row in df.itertuples():
idx_dct = dict(zip(df.index.names, row[0]))
val_dct = dict(zip(df.columns, row[1:]))
res_dct = dict(idx_dct, **val_dct)
print(res_dct)
结果当然是收到了。但我根本不喜欢代码,有一种我在重新发明轮子的感觉。
也许熊猫中有一些我想要的特殊方法?
UPD:原始数据帧是从另一个数据帧作为数据透视表获得的,如下所示:
val
idx1 idx2
1 1 1
2 8
3 3 2
我想得到一个字典列表:
{'idx2': 1, 'idx1': 1, 'val': 1}
{'idx2': 2, 'idx1': 1, 'val': 8}
{'idx2': 3, 'idx1': 3, 'val': 2}
(其实会多出几倍的index和regular columns,而且事先没有列出来,需要从dataframe本身拉出来)
更新:使用修改后的问题中给出的 DF:
这很简单(如果我正确理解了这个问题):
DF 示例:
解决方案 - 获取字典列表: