如何对重复值进行分组,但保留数据框的其他列

时间:2019-02-28 00:12:02

标签: python pandas pandas-groupby

我想对数据帧列的重复值进行分组,但还要在分组后保留数据帧的另一列。 例如,数据如下所示: df-

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

输出应为

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

以下代码仅给出了id和interest列,但是我也想获取相应用户的位置。

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

2 个答案:

答案 0 :(得分:2)

使用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

答案 1 :(得分:1)

一个笨拙但可行的解决方案。与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