将三列变成字典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的主要内容,如果未能解决你的问题,请参考以下文章

将三列数据框重塑为矩阵(“长”到“宽”格式)[重复]

如何使用 Cypher neo4j 将三列连接为一列并获取其中唯一条目的计数?

如何从具有不同数量和索引顺序的三组字典中制作包含三列的条形图?

怎么让matlab中excel表格的第一列变成x,第二列变成y,第三列变成z?

SQL怎么列合并

如何在Django / python中每行循环三列?