繁体   English   中英

从 2 列 Dataframe 创建字典

[英]Create dictionary from 2 columns of Dataframe

我有一个数据框:

df = pd.DataFrame({ 
'ID': ['1', '4', '4', '3', '3', '3'], 
'club': ['arts', 'math', 'theatre', 'poetry', 'dance', 'cricket']
})

注意:数据框的两列都可以有重复的值。

我想为每个级别创建一个字典字典,其中包含其独特的俱乐部名称。 它应该如下所示:

{
{'1':'arts'}, {'4':'math','theatre'}, {'3':'poetry','dance','cricket'}
}

请帮我解决这个问题

尝试groupby()然后to_dict()

grouped = df.groupby("ID")["club"].apply(set)
print(grouped)
> ID
   1                      {arts}
   3    {cricket, poetry, dance}
   4             {math, theatre}

grouped_dict = grouped.to_dict()
print(grouped_dict)
> {'1': {'arts'}, '3': {'cricket', 'poetry', 'dance'}, '4': {'math', 'theatre'}}

编辑:

更改为.apply(set)以获取集合。

您可以使用defaultdict

from collections import defaultdict
d = defaultdict(set)
for k,v in zip(df['ID'], df['club']):
    d[k].add(v)
dict(d)

输出:

{'1': {'arts'}, '4': {'math', 'theatre'}, '3': {'cricket', 'dance', 'poetry'}}

或类似于提供的输出的格式:

[{k:v} for k,v in d.items()]

输出:

[{'1': {'arts'}},
 {'4': {'math', 'theatre'}},
 {'3': {'cricket', 'dance', 'poetry'}}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM