【问题标题】:Pandas dataframe to dict on multiple columns and values to listPandas 数据框对多列和要列出的值进行 dict
【发布时间】:2017-11-26 14:14:05
【问题描述】:

我有一个数据框

id    key
a1     1
a2     1
a3     1
a4     2
a5     2
a6     3

我想创建一个字典,以key 作为机器号,id 列作为列表

喜欢:

{1: ['a1', 'a2', 'a3'], 2: ['a4', 'a5'], 3: ['a6']}

我可以先用 groupby 再做 .to_dict 吗?

【问题讨论】:

标签: python pandas dictionary dataframe


【解决方案1】:

我相信您需要 dict 的列表广告值 - 使用 groupby + apply + to_dict

d = df.groupby('key')['id'].apply(list).to_dict()
print (d)
{1: ['a1', 'a2', 'a3'], 2: ['a4', 'a5'], 3: ['a6']}

或者如果需要带有标量的list,请将if/else 添加到apply

d = df.groupby('key')['id'].apply(lambda x: list(x) if len(x) > 1 else x.iat[0]).to_dict()
print (d)
{1: ['a1', 'a2', 'a3'], 2: ['a4', 'a5'], 3: 'a6'}

【讨论】:

  • 如果我们只有一列,这很好,但是,如果我们必须从多列中获取值怎么办?我遇到了类似的情况。我尝试使用它,但没有成功。我认为map 会这样做,但不确定!如果你愿意,我在这里发了一个问题:stackoverflow.com/questions/46623452/…
【解决方案2】:

groupby 迭代器周围使用字典理解

{n: v.tolist() for n, v in df.groupby('key').id}

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 2013-08-03
    • 2020-02-29
    • 2017-05-02
    • 2016-11-14
    • 2019-06-18
    • 2012-09-03
    • 1970-01-01
    相关资源
    最近更新 更多