简体   繁体   English

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

[英]Python Pandas: Convert nested dictionary to dataframe

I have a dic like this:我有一个这样的 dic:

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

and I would like to convert in into a dataframe like this:我想转换成这样的数据帧:

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

Does anybody know how?有人知道怎么做吗?

Try DataFrame.from_dict() and with keyword argument orient as 'index' -尝试DataFrame.from_dict()并使用关键字参数orient作为'index' -

Example -例子 -

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

If you also want to set the column name for index column , use - df.index.name , Example -如果您还想为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

I just wanted to note (as this is one of the top results for converting from a nested dictionary to a pandas dataframe) that there are other ways of nesting dictionaries that can be also be converted to a dataframe (eg nesting via columns).我只是想指出(因为这是从嵌套字典转换为 Pandas 数据帧的最佳结果之一)还有其他嵌套字典的方法也可以转换为数据帧(例如通过列嵌套)。

eg the following nested dictionary例如下面的嵌套字典

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}}

can be converted to a pandas dataframe using orient='columns'可以使用 orient='columns' 转换为 Pandas 数据框

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

另一个简单的方法是

df =pd.DataFrame(dict).T

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM