【发布时间】:2018-11-28 11:57:05
【问题描述】:
这个问题类似于this one,但我想更进一步。是否可以扩展解决方案以使用更多级别?多级数据框的.to_dict() 方法有一些有前途的选项,但它们中的大多数将返回由元组(即(A, 0, 0): 274.0)索引的条目,而不是将它们嵌套在字典中。
作为我想要完成的示例,请考虑这个多索引数据框:
data = {0: {
('A', 0, 0): 274.0,
('A', 0, 1): 19.0,
('A', 1, 0): 67.0,
('A', 1, 1): 12.0,
('B', 0, 0): 83.0,
('B', 0, 1): 45.0
},
1: {
('A', 0, 0): 254.0,
('A', 0, 1): 11.0,
('A', 1, 0): 58.0,
('A', 1, 1): 11.0,
('B', 0, 0): 76.0,
('B', 0, 1): 56.0
}
}
df = pd.DataFrame(data).T
df.index = ['entry1', 'entry2']
df
# output:
A B
0 1 0
0 1 0 1 0 1
entry1 274.0 19.0 67.0 12.0 83.0 45.0
entry2 254.0 11.0 58.0 11.0 76.0 56.0
您可以想象我们这里有很多记录,而不仅仅是两条,而且索引名称可能是更长的字符串。你怎么能把它变成像这样的嵌套字典(或直接变成 JSON):
[
{'entry1': {'A': {0: {0: 274.0, 1: 19.0}, 1: {0: 67.0, 1: 12.0}},
'B': {0: {0: 83.0, 1: 45.0}}},
'entry2': {'A': {0: {0: 254.0, 1: 11.0}, 1: {0: 58.0, 1: 11.0}},
'B': {0: {0: 76.0, 1: 56.0}}}}
]
我认为一些递归可能会有所帮助,可能类似于 this,但到目前为止还没有成功。
【问题讨论】:
标签: python pandas dictionary multi-index