使用Pandas的drop_duplicates未删除重复行问题求助
问题:执行drop_duplicates后原DataFrame未删除重复行?
问题原因
Pandas的drop_duplicates()方法默认不会直接修改原DataFrame,而是返回一个处理后的新DataFrame实例。你执行代码后没有将返回结果赋值给变量,所以原df完全没变化。
解决办法
有两种方式可以达到你的需求:
方式1:将处理结果赋值给变量
把返回的新DataFrame赋值给原变量或新变量,这样就能得到去重后的结果:
# 覆盖原df df = df.drop_duplicates(subset=['id'], keep='last') # 或者保存到新变量,保留原df new_df = df.drop_duplicates(subset=['id'], keep='last')
方式2:使用inplace=True参数直接修改原DataFrame
通过inplace=True参数让方法直接在原DataFrame上修改,无需赋值:
df.drop_duplicates(subset=['id'], keep='last', inplace=True)
额外提示
如果你的需求是保留每个id对应最新的last_updated记录(而非DataFrame中的最后一行),建议先按last_updated排序再去重,避免行顺序影响结果:
# 先按时间降序排序,再保留每个id的第一条(即最新记录) df = df.sort_values('last_updated', ascending=False).drop_duplicates(subset=['id'], keep='first')
内容的提问来源于stack exchange,提问作者dsx
相关产品推荐
相关产品推荐

