尝试从pandas数据框架创建一个嵌套字典



我试图从一个数据框中创建一个字典,其中第一列值是键,并且在其中其他列使用头和值的组合来创建字典。

import pandas as pd
data = [
[1,'name1', 'surname1'],
[2,'name2', 'surname2'],
[3,'name3', 'surname3']
]
df = pd.DataFrame(data,columns=['pkey','first_name', 'last_name'])
wanted_dictionary = {
1 : {'first_name' : 'name1', 'last_name' : 'surname1'},
2 : {'first_name' : 'name2', 'last_name' : 'surname2'},
3 : {'first_name' : 'name3', 'last_name' : 'surname3'},
}
print(wanted_dictionary)

我试了很多to_dict和groupby的变体,但似乎就是破解不了。

使用set_index+to_dict:

res = df.set_index("pkey").to_dict("index")
print(res)

{1: {'first_name': 'name1', 'last_name': 'surname1'},
2: {'first_name': 'name2', 'last_name': 'surname2'},
3: {'first_name': 'name3', 'last_name': 'surname3'}}

您可以使用:

df.set_index("pkey").to_dict(orient="index"))

这个输出:

{
"1": {
"first_name": "name1",
"last_name": "surname1"
},
"2": {
"first_name": "name2",
"last_name": "surname2"
},
"3": {
"first_name": "name3",
"last_name": "surname3"
}
}
spl = df.to_dict('split')
d = {e[0]:{spl['columns'][1]:e[1],spl['columns'][2]:e[2]} for e in spl['data']}
print(d)
# {
#  1: {'first_name': 'name1', 'last_name': 'surname1'}, 
#  2: {'first_name': 'name2', 'last_name': 'surname2'}, 
#  3: {'first_name': 'name3', 'last_name': 'surname3'}
# }

最新更新