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

Pandas合并去重后保存DataFrame出现重复,如何仅保留最终结果?

问题:合并去重Pandas DataFrame后保存仍保留重复数据

尝试合并两个Pandas DataFrame并去除重复数据,操作完成后保存文件时,却同时保留了合并后的dataF和原availableData的数据。搜索相关问题未找到解决方案。

原代码如下:

availableData = pd.read_csv("datasets/1m_inf")
data = get_data(currentTime)
dataF = pd.concat([availableData, data]).drop_duplicates()
dataF.to_csv("datasets/1m_inf", index=False)

补充信息:打印dataF时,显示的行是预期的720行,但摘要显示有1440行:

0      1666530660  19154.6  19154.6  19154.6  19154.6  19154.6    0.265673      1
1      1666530720  19152.2  19152.2  19152.2  19152.2  19152.2    0.003825      1
..            ...      ...      ...      ...      ...      ...         ...    ...
719    1666540920  19198.0  19198.1  19198.0  19198.1  19198.0  0.13566735      5
720    1666540980  19198.2  19198.8  19198.2  19198.8  19198.4  2.60437627      7

[1440 rows x 8 columns]

解决办法

  1. 精准指定去重列
    drop_duplicates() 默认仅识别整行完全重复的记录,若你的数据没有整行重复,去重操作就不会生效。可以通过subset参数指定唯一标识列(比如示例中的时间戳列)来实现精准去重:
# 替换为实际的唯一标识列名,比如第一列的字段名
dataF = pd.concat([availableData, data]).drop_duplicates(subset=['timestamp'], keep='last')

keep='last' 表示保留最新的重复行,按需可改为'first'保留最早的记录。

  1. 重置索引消除显示混淆
    合并后的DataFrame可能存在重复索引,导致打印时行号和实际行数不符。重置索引后能直观查看真实数据量:
dataF = pd.concat([availableData, data]).drop_duplicates(subset=['timestamp'], keep='last').reset_index(drop=True)
  1. 提前验证去重结果
    保存前先通过len(dataF)确认行数是否符合预期:
print(len(dataF))  # 预期输出720

若输出仍为1440,说明data和availableData本身没有重叠数据,需检查数据来源逻辑。

  1. 排查文件写入异常
    极少数情况文件被其他进程占用会导致写入失败,可临时修改保存路径验证:
dataF.to_csv("datasets/1m_inf_temp.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:10:31