如何按重复值分组但保留datafram的其他列

2024-04-24 23:43:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要groupby一个dataframe列的重复值,但也要在groupby之后保留dataframe的另一列。 例如,数据看起来像: 测向-

id     interest   location
1        A            X
2        A            Y
1        B            X
3        C            Z
2        D            Y

输出应该是

^{pr2}$

下面的代码只给出id和interest列,但是我也希望获得相应用户的位置。在

unique_id = df.groupby('id')['interest'].unique().reset_index()


Tags: 数据代码用户iddataframedfindexlocation
2条回答

有点笨拙但有效的解决方案。与Wen Ben的建议非常相似,只是它可以处理任意数量的列,在聚合之前对项进行排序,还可以聚合位置。在

result = df.groupby('id').apply(lambda x:
                                pd.Series({name: ','.join(sorted(set(x[name]))) 
                                          for name in x})).reset_index()
#   id interest location
#0   1      A,B        X
#1   2      A,D        Y
#2   3        C        Z

使用groupby.agg

yourdf=df.groupby('id',as_index=False).agg({'interest':','.join,'location':'first'})
yourdf
Out[140]: 
   id interest location
0   1      A,B        X
1   2      A,D        Y
2   3        C        Z

相关问题 更多 >