可以使用嵌套字典创建嵌套列的pandas数据框吗?
我在这里想尝试一些新想法,可能我的想法并不好。欢迎大家提出更好的建议。我想创建一个嵌套的列式 pandas 数据框,目的是为了可视化和分析。输出结果应该像这样 -
Marks
Physics | Biology
Theo|Prac | Theo|Prac
99 | 100 | 89 | 100
我的数据是以嵌套字典的形式存储的 -
nested_dict = {
'Marks': {
'Physics': {
'Theo': 99,
'Prac': 100
},
'Biology': {
'Theo': 89,
'Prac': 100
}
}
}
我觉得上面的表格在可视化方面看起来不错,但我不确定它是否方便分析。为了分析,我需要对子组进行操作,比如:物理成绩 = (理论 + 实践) / 200 * 100。使用嵌套的 pandas 数据框是进行分析的最佳方式吗?
有没有办法可以做到这一点?使用 pd.DataFrame.from_dict(nested_dict)
似乎不太管用。我得到的是 -
Marks
Biology {'Theo': 89, 'Prac': 100}
Physics {'Theo': 99, 'Prac': 100}
1 个回答
1
要把嵌套的数据变成平铺的格式,可以手动使用concat
和字典推导式,然后再用unstack
、to_frame
和转置的方法:
out = (pd.concat({k: pd.DataFrame(v)
for k, v in nested_dict.items()},
axis=1)
.unstack().to_frame().T
)
你也可以使用json_normalize
,然后把列转换成多重索引(MultiIndex):
out = pd.json_normalize(nested_dict)
out.columns = out.columns.str.split('.', expand=True)
输出结果:
Marks
Physics Biology
Theo Prac Theo Prac
0 99 100 89 100