嵌套字典到多索引数据框,其中字典键是列标签
假设我有一本看起来像这样的字典:
dictionary = {'A' : {'a': [1,2,3,4,5],
'b': [6,7,8,9,1]},
'B' : {'a': [2,3,4,5,6],
'b': [7,8,9,1,2]}}
我想要一个看起来像这样的数据框:
A B
a b a b
0 1 6 2 7
1 2 7 3 8
2 3 8 4 9
3 4 9 5 1
4 5 1 6 2
有方便的方法吗?如果我尝试:
In [99]:
DataFrame(dictionary)
Out[99]:
A B
a [1, 2, 3, 4, 5] [2, 3, 4, 5, 6]
b [6, 7, 8, 9, 1] [7, 8, 9, 1, 2]
我得到一个数据框,其中每个元素都是一个列表。我需要的是一个多索引,其中每个级别对应于嵌套dict中的键,而行对应于列表中每个元素,如上所示。我认为我可以使用非常粗糙的解决方案,但我希望可能会有一些简单的事情。
-
熊猫希望MultiIndex值作为元组,而不是嵌套字典。最简单的方法是先将字典转换为正确的格式,然后再尝试将其传递给DataFrame:
>>> reform = {(outerKey, innerKey): values for outerKey, innerDict in dictionary.iteritems() for innerKey, values in innerDict.iteritems()} >>> reform {('A', 'a'): [1, 2, 3, 4, 5], ('A', 'b'): [6, 7, 8, 9, 1], ('B', 'a'): [2, 3, 4, 5, 6], ('B', 'b'): [7, 8, 9, 1, 2]} >>> pandas.DataFrame(reform) A B a b a b 0 1 6 2 7 1 2 7 3 8 2 3 8 4 9 3 4 9 5 1 4 5 1 6 2 [5 rows x 4 columns]