如何将嵌套字典转换为指定格式的多列Pandas DataFrame?
解决方案
你当前用stack()会把DataFrame的列索引堆叠到行索引中,最终得到二级索引的Series。要得到多列的DataFrame,只需要调整创建方式,去掉不必要的stack()操作即可,分两种常见场景:
场景1:外层键(A/B/C)作为行索引,内层键(a/b)作为列
直接使用from_dict并指定orient='index',无需stack():
import pandas as pd kdict = {'A': {'a': 1, 'b': 2}, 'B': {'a': 3, 'b': 4}, 'C': {'a': 5, 'b': 6}} df = pd.DataFrame.from_dict(kdict, orient='index') # 可选:自定义列名 df.columns = ['列a', '列b']
得到的结构如下:
| 列a | 列b | |
|---|---|---|
| A | 1 | 2 |
| B | 3 | 4 |
| C | 5 | 6 |
场景2:内层键(a/b)作为行索引,外层键(A/B/C)作为列
可以通过转置原DataFrame,或者直接指定orient='columns'实现:
# 方法1:转置已有DataFrame df = pd.DataFrame.from_dict(kdict, orient='index').T # 方法2:直接指定orient参数 df = pd.DataFrame.from_dict(kdict, orient='columns') # 可选:自定义列名 df.columns = ['列A', '列B', '列C']
得到的结构如下:
| 列A | 列B | 列C | |
|---|---|---|---|
| a | 1 | 3 | 5 |
| b | 2 | 4 | 6 |
内容的提问来源于stack exchange,提问作者SH Chung
相关产品推荐
相关产品推荐

