簡體   English   中英

Pandas 數據幀中的分組和連接值

[英]Grouping and concatening values in Pandas dataframes

我在本網站的另一個請求中找到了我的問題的答案,但是提供的答案對我不起作用,所以我在另一個請求中詢問。 我將使用相同的數據並顯示我得到的結果。

所以基本上,我有一個 dataframe ,其中一列有重復的值,我想將它們組合在一行中,並且我想將另一列的值連接為組合行的值。

這是示例:

data = np.array([['John', 'Smith', 1], ['John', 'Smith', 7], ['Eric', 'Adams', 9], ['Jane', 'Doe', 14], ['Jane', 'Doe', 16], ['John', 'Smith', 19]])

df = pd.DataFrame(data, columns=['FIRST_NM', 'LAST_NM', 'PAGE_NUM'])

output 符合預期:

    FIRST_NM    LAST_NM     PAGE_NUM
0   John        Smith       1
1   John        Smith       7
2   Eric        Adams       9
3   Jane        Doe         14
4   Jane        Doe         16
5   John        Smith       19

一旦我對FIRST_NMLAST_NM的值進行分組並連接PAGE_NUM的值,這就是我想要得到的:

    FIRST_NM    LAST_NM     PAGE_NUM
0   John        Smith       1,7,19
1   Eric        Adams       9
2   Jane        Doe         14,16

建議的解決方案,對我來說很有意義,是使用這個:

df.groupby(['FIRST_NM', 'LAST_NM']).apply(lambda group: ','.join(group['PAGE_NUM']))

然而不幸的是,這似乎根本沒有效果,我得到了完全相同的結果:

    FIRST_NM    LAST_NM     PAGE_NUM
0   John        Smith       1
1   John        Smith       7
2   Eric        Adams       9
3   Jane        Doe         14
4   Jane        Doe         16
5   John        Smith       19

任何人都可以幫助指出我做錯了什么?

提前謝謝了!

傑夫

通過groupby()agg()嘗試:

out=df.groupby(['FIRST_NM','LAST_NM'],sort=False,as_index=False).agg({'PAGE_NUM':','.join})

如果需要唯一值,則使用:

out=df.groupby(['FIRST_NM','LAST_NM'],sort=False,as_index=False).agg({'PAGE_NUM':set})
out['PAGE_NUM']=out['PAGE_NUM'].astype(str).str[1:-1].str.replace("'",'')

Output out

    FIRST_NM    LAST_NM     PAGE_NUM
0   John        Smith       1,7,19
1   Eric        Adams       9
2   Jane        Doe         14,16

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM