Pandas 嵌套字典到多指标数据框架
Pandas DataFrame是一个二维的大小可变的、可能是异质的表格式数据结构,有标记的axis(行和列)。数据框架是一个二维的数据结构,也就是说,数据是以表格的方式在行和列中排列。Pandas DataFrame由三个主要部分组成,即数据、行和列。一个多索引数据框架是一个具有多级索引或分层索引的pandas数据框架。
Pandas需要多索引值作为图元,而不是作为一个嵌套的字典。所以,首先,我们需要将嵌套的索引值转换成图元。
示例 #1:
# Import module
import pandas as pd
# Nested dictionary to convert it
# into multiindex dataframe
nested_dict = {'A': {'a': [1, 2, 3,
4, 5],
'b': [6, 7, 8,
9, 10]},
'B': {'a': [11, 12, 13,
14, 15],
'b': [16, 17, 18,
19, 20]}}
reformed_dict = {}
for outerKey, innerDict in nested_dict.items():
for innerKey, values in innerDict.items():
reformed_dict[(outerKey,
innerKey)] = values
# Multiindex dataframe
reformed_dict
输出:
注意,在reformed_dict中,索引值在元组中。现在要把reformed_dict转换成多索引数据帧,我们可以使用pd.DataFrame()方法。
multiIndex_df = pd.DataFrame(reformed_dict)
multiIndex_df
输出:
在这里的输出中,我们可以看到列的分层索引/多索引。
示例 #2:
# Import module
import pandas as pd
# Nested dictionary to convert it into multiindex dataframe
nested_dict = {'India': {'State': ['Maharashtra', 'West Bengal',
'Uttar Pradesh', 'Bihar', 'Karnataka'],
'Capital': ['Mumbai', 'Kolkata', 'Lucknow',
'Patna', 'Bengaluru']},
'America': {'State': ['California', 'Florida', 'Georgia',
'Massachusetts', 'New York'],
'Capital': ['Sacramento', 'Tallahassee', 'Atlanta',
'Boston', 'Albany']}}
reformed_dict = {}
for outerKey, innerDict in nested_dict.items():
for innerKey, values in innerDict.items():
reformed_dict[(outerKey, innerKey)] = values
# Display multiindex dataframe
multiIndex_df = pd.DataFrame(reformed_dict)
multiIndex_df
输出: