2024-04-24 23:43:08 发布
网友
我想要groupby一个dataframe列的重复值,但也要在groupby之后保留dataframe的另一列。 例如,数据看起来像: 测向-
id interest location 1 A X 2 A Y 1 B X 3 C Z 2 D Y
输出应该是
下面的代码只给出id和interest列,但是我也希望获得相应用户的位置。在
unique_id = df.groupby('id')['interest'].unique().reset_index()
有点笨拙但有效的解决方案。与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
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
有点笨拙但有效的解决方案。与Wen Ben的建议非常相似,只是它可以处理任意数量的列,在聚合之前对项进行排序,还可以聚合位置。在
使用
groupby.agg
相关问题 更多 >
编程相关推荐