我想对数据帧列的重复值进行分组,但还要在分组后保留数据帧的另一列。 例如,数据如下所示: 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()
答案 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