Pandas按两列分组,然后获取值的字典

12

我有一个Pandas数据框:

banned_titles = 
TitleId  RelatedTitleId
0    89989           32598
1    89989         3085083
2    95281         3085083

当我按照以下方式应用 groupby 时

In [84]: banned_titles.groupby('TitleId').groups
Out[84]: {89989: [0, 1], 95281: [2]}

这很接近但不是我想要的。

我想要的是:

{89989: [32598, 3085083], 95281: [3085083]}

有没有一种方法可以做到这一点?

2个回答

29

试试这个:

In [8]: x.groupby('TitleId')['RelatedTitleId'].apply(lambda x: x.tolist()).to_dict()
Out[8]: {89989: [32598, 3085083], 95281: [3085083]}

或作为一系列列表:

In [10]: x.groupby('TitleId')['RelatedTitleId'].apply(lambda x: x.tolist())
Out[10]:
TitleId
89989    [32598, 3085083]
95281           [3085083]
Name: RelatedTitleId, dtype: object

数据:

In [9]: x
Out[9]:
   TitleId  RelatedTitleId
0    89989           32598
1    89989         3085083
2    95281         3085083

1
太好了!正是我想要的,回应速度超快。Дякую! - Bedi Egilmez

4

尝试使用单行代码(不使用lambda):

dict(df.groupby('TitleId')['RelatedTitleId'].apply(list))
 # {89989: [32598, 3085083], 95281: [3085083]}

1
很遗憾,我认为这在pandas 21中不再起作用了。 - Alex Lenail
1
你知道如何将DataFrame中的键名保存到字典中吗? - mousomer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接