You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除DataFrame中包含重复值的行 附实操案例

按指定列删除DataFrame重复行的解决方案

你要实现按S.No列去重,直接调用pandas内置的drop_duplicates方法即可,比自己写循环处理效率更高,也不会破坏你原有迭代插入数据库的逻辑。

具体实现

1. 单独去重代码

如果你只需要删掉重复的S.No行,保留其中一条,用下面的代码就行:

# 按S.No列判断重复,保留第一次出现的行,返回去重后的新DataFrame
df = df.drop_duplicates(subset='S.No', keep='first')

如果你要保留最后一次出现的S.No=10的那条记录,把keep参数改成keep='last'即可。

2. 结合你现有逻辑的完整代码

你可以先完成去重,再跑你原来的迭代逻辑,调整后的代码如下:

from datetime import datetime
import pandas as pd

# 第一步:先按S.No列去重
df = df.drop_duplicates(subset='S.No', keep='first')

n = 2
while n <= len(df):
    df1 = df.tail(n)
    cond = df.Column1 < df.Column2
    df.loc[cond, ['Column1', 'Column2']] = df.loc[cond, ['Column2', 'Column1']].values
    print(df1)
    df2 = df1.to_dict("records")
    db_cm.insert_one({"data": df2, "time stamp": datetime.now()})
    df.drop(df1.index ,inplace=True)
    n = n + 1
else:
    print(df.tail(n))

参数说明

  • subset:用来判断重复的参考列,这里填'S.No'就仅判断该列的值是否重复
  • keep:重复时的保留规则,first保留首次出现的行,last保留最后出现的行,填False会直接删除所有重复行
  • inplace:是否直接修改原DataFrame,默认值为False,会返回新的去重后对象

内容的提问来源于stack exchange,提问作者surendra suri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:45:03