将三列变成字典python

Posted

技术标签:

【中文标题】将三列变成字典python【英文标题】:turn three columns into dictionary python 【发布时间】:2020-01-02 06:57:50 【问题描述】:
Name = [list(['Amy', 'A', 'Angu']),
          list(['Jon', 'Johnson']),
          list(['Bob', 'Barker'])]

Other =  [list(['Amy', 'Any', 'Anguish']),
        list(['Jon', 'Jan']),
        list(['Baker', 'barker'])]

import pandas as pd
df = pd.DataFrame('Other' : Other,  
                  'ID': ['E123','E456','E789'], 
                  'Other_ID': ['A123','A456','A789'],
                  'Name' : Name,

                 )

    ID              Name    Other               Other_ID
0   E123    [Amy, A, Angu]  [Amy, Any, Anguish] A123
1   E456    [Jon, Johnson]  [Jon, Jan]          A456
2   E789    [Bob, Barker]   [Baker, barker]     A789

我有上面看到的df。我想将列IDNameOther 放入字典中,它们的键为ID。我根据python pandas dataframe columns convert to dict key and value尝试了这个

todict = dict(zip(df.ID, df.Name))

这和我想要的很接近

'E123': ['Amy', 'A', 'Angu'],
 'E456': ['Jon', 'Johnson'],
 'E789': ['Bob', 'Barker']

但我想获得包含来自Other 列的值的输出

'E123': ['Amy', 'A', 'Angu','Amy', 'Any','Anguish'],
 'E456': ['Jon', 'Johnson','Jon','Jan'],
'E789':  ['Bob', 'Barker','Baker','barker']

如果我把第三列放在Other 它会给我错误

todict = dict(zip(df.ID, df.Name, df.Other))

如何获得我想要的输出?

【问题讨论】:

【参考方案1】:

为什么不在创建Name 列的字典之前将NameOther 列组合起来。

df['Name'] = df['Name'] + df['Other']

dict(zip(df.ID, df.Name))

给予

'E123': ['Amy', 'A', 'Angu', 'Amy', 'Any', 'Anguish'],
 'E456': ['Jon', 'Johnson', 'Jon', 'Jan'],
 'E789': ['Bob', 'Barker', 'Baker', 'barker']

【讨论】:

以上是关于将三列变成字典python的主要内容,如果未能解决你的问题,请参考以下文章