2016-06-07 51 views
4

字典我有一個熊貓數據幀:熊貓GROUPBY兩列然後得到的值

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]} 

有沒有辦法做到這一點?

回答

13

試試這個:

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 
+0

甜!正是我想要的,閃電般的快速反應。 Дякую! –

+0

@BediE,非常歡迎您(будьласка)! :) – MaxU

4

嘗試列表中的一個線(無拉姆達):

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

不幸的是,我相信這不再適用於熊貓21 –

+0

你知道如何將DataFrame中的鍵名保存到字典嗎? – mousomer