pandas如何指定多列分组去重并仅合并重复行的指定列
问题原因
你当前的写法只指定了对name列做聚合处理,groupby操作只会返回参与分组的列和你指定聚合的列,所以其他字段(比如created_at)会丢失。
解决方案
使用agg方法为不同列指定不同的聚合规则即可,你需要保留分组内首行的其他字段、同时新增拼接name的字段,代码示例如下:
import pandas as pd # 按title和thumbnail分组 result = df.groupby(['title', 'thumbnail'], as_index=False).agg( # 保留首行的created_at字段 created_at = ('created_at', 'first'), # 保留首行的原始name字段(如果不需要可以删掉这行) name = ('name', 'first'), # 新增字段存储所有重复行的name拼接结果 merged_names = ('name', lambda x: ' '.join(x)) ).reset_index(drop=True)
规则说明
- 你如果还有其他需要保留的字段,直接在
agg的参数里新增对应配置即可,格式为输出列名 = ('原表列名', 'first') - 如果你不需要保留首行的原始
name字段,删掉name = ('name', 'first')这行即可
内容的提问来源于stack exchange,提问作者Jvn
相关产品推荐
相关产品推荐

