Python Pandas: 将嵌套字典转换为数据框
Python Pandas: Convert nested dictionary to dataframe
我有一个这样的dic:
{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
有人知道怎么做吗?
尝试 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
我只是想指出(因为这是从嵌套字典转换为 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')
我有一个这样的dic:
{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
有人知道怎么做吗?
尝试 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
我只是想指出(因为这是从嵌套字典转换为 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')