我有一个数据框
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吗?
最佳答案
我相信您需要列出 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'}
关于python - Pandas 数据框可对多列和要列出的值进行字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44713968/