为什么pandas按多列执行Groupby操作无法实现去重效果
问题原因
groupby方法仅完成数据分组逻辑,返回的是DataFrameGroupBy分组对象,你没有指定分组后的聚合规则,自然无法得到去重后的结果,也不会修改原DataFrame。
正确实现方案
方案1:使用专门的去重方法(推荐)
pandas内置的drop_duplicates方法就是用来按指定列删除重复行的,完全匹配你的需求,代码如下:
res = res.drop_duplicates(subset=["Time", "Vehicle1", "Vehicle2"], keep="first")
参数说明:
subset:指定判断重复的参考列,三个列值都相同才会被判定为重复行keep="first":保留重复行中第一次出现的行,和你预期输出的结果完全一致
方案2:用groupby实现(不推荐,逻辑冗余)
如果一定要用groupby逻辑实现,需要在分组后指定取每个分组第一条数据的聚合操作:
res = res.groupby(["Time", "Vehicle1", "Vehicle2"], as_index=False).first()
as_index=False参数可以避免分组列被设置为行索引,保持原表的列结构。
内容的提问来源于stack exchange,提问作者Poyita de troya
相关产品推荐
相关产品推荐

