【问题标题】:Converting pandas multiple columns to dictionaries将熊猫多列转换为字典
【发布时间】:2019-07-29 20:45:37
【问题描述】:

我有一个包含 100 列的 pandas 数据框,我想为每一列创建一个字典,其中第一列作为键,我一直在手动进行。

让我用一个示例数据框解释一下

ID a b c 123 jon foo bar 789 pan bam fan 278 car bike boat

让我们考虑上表的列名ID、a、b、c。现在我正在尝试为每一列创建字典,其中 ID 是字典的键。

如下所示

dicta = {ID: a} dictb = {ID: b} dictc = {ID: c}

我目前在做的是:

dicta_ = dict(zip(df['ID'], df['a'])) dicta = {k:v for k,v in dicta_.items()}

dictb_ = dict(zip(df['ID'], df['b'])) dictb = {k:v for k,v in dictb_.items()}

dictc_ = dict(zip(df['ID'], df['c'])) dictc = {k:v for k,v in dictc_.items()}

上面的代码正在获取我想要的结果,但我必须手动为所有 100 列执行此操作,这不是最有效的方法。

如果我能得到一些帮助或建议,通过编写循环或函数来自动化该过程,我将不胜感激。提前致谢!

【问题讨论】:

  • 这似乎是非常基本的功能。你读过 Python 教程吗? (docs.python.org/3/tutorial)
  • @thebjorn,如果您觉得这是一个非常基本的功能,如果您能为我提供解决上述问题的方法,我将不胜感激。谢谢:)

标签: python pandas python-2.7 dictionary


【解决方案1】:

set_index 然后使用df.to_dict():

d = df.set_index('ID').to_dict()

然后调用具有值的列:

d['a']

# {123: 'jon', 278: 'car', 789: 'pan'}

d['b']

# {123: 'foo', 278: 'bike', 789: 'bam'}

【讨论】:

    猜你喜欢
    • 2019-07-18
    • 2017-12-12
    • 2018-11-25
    • 1970-01-01
    • 2018-07-14
    • 2018-10-05
    • 2019-05-07
    • 2016-09-06
    相关资源
    最近更新 更多