加入每个组中的字符串并分配回原始数据帧

我有两列的数据框:user和lang。每个用户都知道一种或多种语言:


     lang     user

0  Python     Mike

1   Scala     Mike

2       R     John

3   Julia  Michael

4    Java  Michael

我需要用user他/她知道的所有语言获取每一行。我可以这样做:


df.groupby('user')['lang'].apply(lambda x:', '.join(x)).reset_index()

但我明白了:


      user           lang

0     John              R

1  Michael    Julia, Java

2     Mike  Python, Scala

而不是我想要的:


           lang     user

0  Python,Scala     Mike

1  Python,Scala     Mike

2             R     John

3    Julia,Java  Michael

4    Julia,Java  Michael

重现代码:


import pandas as pd


df = pd.DataFrame({"lang":["Python","Scala","R","Julia","Java"],

                   "user":["Mike","Mike","John","Michael","Michael"]})

print(df)


慕姐8265434
浏览 210回答 1
1回答

蝴蝶刀刀

用于transform将groupby结果“广播”到输入中的每一行。df['lang'] = df.groupby('user')['lang'].transform(', '.join)df            lang     user0  Python, Scala     Mike1  Python, Scala     Mike2              R     John3    Julia, Java  Michael4    Julia, Java  Michael
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python