pandas 尝试从panda Dataframe 创建嵌套字典

qpgpyjmq  于 2023-01-15  发布在  其他
关注(0)|答案(3)|浏览(147)

我试图从一个 Dataframe 创建一个字典,其中第一列的值是键,而在其中其他列使用标题和值的组合来创建字典。

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的许多变体,但似乎就是无法破解它。

k75qkfdt

k75qkfdt1#

使用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'}}
eagi6jfj

eagi6jfj2#

您可以用途:

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

iyfjxgzm3#

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

相关问题