嵌套字典到 MultiIndex pandas DataFrame(3 级)
Posted
技术标签:
【中文标题】嵌套字典到 MultiIndex pandas DataFrame(3 级)【英文标题】:Nested Dictionary to MultiIndex pandas DataFrame (3 level) 【发布时间】:2015-08-03 18:16:11 【问题描述】:我想为 3 级嵌套字典做同样的事情
Nested dictionary to multiindex dataframe where dictionary keys are column labels
【问题讨论】:
看看这个:construct-pandas-dataframe-from-items-in-nested-dictionary 在 *** 上。 【参考方案1】:使用三级dict的例子
In [1]: import pandas as pd
In [2]: dictionary = 'A': 'a': 1: [2,3,4,5,6],
...: 2: [2,3,4,5,6],
...: 'b': 1: [2,3,4,5,6],
...: 2: [2,3,4,5,6],
...: 'B': 'a': 1: [2,3,4,5,6],
...: 2: [2,3,4,5,6],
...: 'b': 1: [2,3,4,5,6],
...: 2: [2,3,4,5,6]
以下字典理解基于您链接的问题中的一个
In [3]: reform = (level1_key, level2_key, level3_key): values
...: for level1_key, level2_dict in dictionary.items()
...: for level2_key, level3_dict in level2_dict.items()
...: for level3_key, values in level3_dict.items()
这给了
In [4]: reform
Out[4]:
('A', 'a', 1): [2, 3, 4, 5, 6],
('A', 'a', 2): [2, 3, 4, 5, 6],
('A', 'b', 1): [2, 3, 4, 5, 6],
('A', 'b', 2): [2, 3, 4, 5, 6],
('B', 'a', 1): [2, 3, 4, 5, 6],
('B', 'a', 2): [2, 3, 4, 5, 6],
('B', 'b', 1): [2, 3, 4, 5, 6],
('B', 'b', 2): [2, 3, 4, 5, 6]
对于熊猫数据框
In [5]: pd.DataFrame(reform)
Out[5]:
A B
a b a b
1 2 1 2 1 2 1 2
0 2 2 2 2 2 2 2 2
1 3 3 3 3 3 3 3 3
2 4 4 4 4 4 4 4 4
3 5 5 5 5 5 5 5 5
4 6 6 6 6 6 6 6 6
In [6]: df = pd.DataFrame(reform).T
Out[6]:
0 1 2 3 4
A a 1 2 3 4 5 6
2 2 3 4 5 6
b 1 2 3 4 5 6
2 2 3 4 5 6
B a 1 2 3 4 5 6
2 2 3 4 5 6
b 1 2 3 4 5 6
2 2 3 4 5 6
如您所见,您可以通过添加 元组的理解和新键的另一行。
奖励:为索引添加名称
In [7]: names=['level1', 'level2', 'level3']
In [8]: df.index.set_names(names, inplace=True)
In [9]: df
Out[9]:
0 1 2 3 4
level1 level2 level3
A a 1 2 3 4 5 6
2 2 3 4 5 6
b 1 2 3 4 5 6
2 2 3 4 5 6
B a 1 2 3 4 5 6
2 2 3 4 5 6
b 1 2 3 4 5 6
2 2 3 4 5 6
【讨论】:
内部列表长度不同时会失败以上是关于嵌套字典到 MultiIndex pandas DataFrame(3 级)的主要内容,如果未能解决你的问题,请参考以下文章
构建 MultiIndex pandas DataFrame 嵌套 Python 字典
使用元组键从字典创建 MultiIndex pandas DataFrame
Pandas MultiIndex(超过 2 个级别)DataFrame 到嵌套 Dict/JSON
从字典列表创建 Pandas MultiIndex 的最佳方法是啥?