Python Pandas:将嵌套字典转换为数据框

Posted

技术标签:

【中文标题】Python Pandas:将嵌套字典转换为数据框【英文标题】:Python Pandas: Convert nested dictionary to dataframe 【发布时间】:2015-10-06 06:06:41 【问题描述】:

我有一个这样的字典:

1 : 'tp': 26, 'fp': 112,
2 : 'tp': 26, 'fp': 91,
3 : 'tp': 23, 'fp': 74

我想转换成这样的数据框:

t tp fp
1 26  112
2 26  91
3 23  74

有人知道吗?

【问题讨论】:

【参考方案1】:

尝试DataFrame.from_dict() 并使用关键字参数orient 作为'index' -

例子-

In [20]: d = 1 : 'tp': 26, 'fp': 112,
   ....: 2 : 'tp': 26, 'fp': 91,
   ....: 3 : 'tp': 23, 'fp': 74

In [24]: df =pd.DataFrame.from_dict(d,orient='index')

In [25]: df
Out[25]:
   tp   fp
1  26  112
2  26   91
3  23   74

如果您还想为 index 列设置列名,请使用 - df.index.name ,示例 -

In [30]: df.index.name = 't'

In [31]: df
Out[31]:
   tp   fp
t
1  26  112
2  26   91
3  23   74

【讨论】:

【参考方案2】:

我只是想指出(因为这是从嵌套字典转换为 pandas 数据帧的最佳结果之一)还有其他嵌套字典的方法也可以转换为数据帧(例如通过列嵌套)。

例如以下嵌套字典

patients = "Name":"0":"John","1":"Nick","2":"Ali","3":"Joseph",
            "Gender":"0":"Male","1":"Male","2":"Female","3":"Male",
            "Nationality":"0":"UK","1":"French","2":"USA","3":"Brazil",
            "Age" :"0":10,"1":25,"2":35,"3":29

可以使用 orient='columns' 转换为 pandas 数据框

df_patients = pd.DataFrame.from_dict(patients, orient='columns')

【讨论】:

以上是关于Python Pandas:将嵌套字典转换为数据框的主要内容,如果未能解决你的问题,请参考以下文章

将带有嵌套字典的json响应转换为pandas数据框[重复]

将 Python 字典转换为 Pandas 数据框

Pandas 数据框到嵌套字典,名称空间为 None

将 pandas DataFrame 转换为嵌套字典

如何在python中使用pandas将字典列表转换为数据框[重复]

python pandas将数据框转换为具有多个值的字典