Pandas数据框用于列出要列出的多个列和值

时间:2017-06-23 05:52:00

标签: python pandas dictionary dataframe

我有一个数据框

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吗?

2 个答案:

答案 0 :(得分:2)

我认为您需要列出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'}

答案 1 :(得分:1)

groupby迭代器

周围使用字典理解
{n: v.tolist() for n, v in df.groupby('key').id}