首页 > 解决方案 > 从数据框创建字典的字典

问题描述

我正在尝试将数据帧转换为以下格式的字典:

df
    name   age country state  pincode
0  user1  10.0      in    tn      1.0
1  user2  11.0      us    tx      2.0
2  user3  12.0      eu    fr      3.0
{
   'user1':{'age':10,'country':'in','state':'tn','pincode':1},
   'user2':{'age':11,'country':'us','state':'tx','pincode':2},
   'user3':{'age':12,'country':'eu','state':'fr','pincode':3}
}

我目前正在通过以下声明执行此操作:

op = {}
for i, row in df.iterrows():
    op[row['name']] = {'age':row['age'],'country':row['country'],'state':row['state'],'pincode':row['pincode']}

如果向 df 添加了其他列,我希望解决方案能够正常工作。例如电话号码。由于我写的语句是静态的,它不会在我的输出中给我额外的行。pandas 中是否有内置方法可以做到这一点?

标签: pythonpandasdictionary

解决方案


这可能不是很可读,但这里有一个单行字典理解:

{k:{a:b for a,b in zip(df.columns.tolist()[1:], v)}
 for k,v in zip(df['name'].to_list(), df.iloc[:,1:].to_numpy().tolist())}

推荐阅读