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]
解决办法
- 精准指定去重列
drop_duplicates()默认仅识别整行完全重复的记录,若你的数据没有整行重复,去重操作就不会生效。可以通过subset参数指定唯一标识列(比如示例中的时间戳列)来实现精准去重:
# 替换为实际的唯一标识列名,比如第一列的字段名 dataF = pd.concat([availableData, data]).drop_duplicates(subset=['timestamp'], keep='last')
keep='last' 表示保留最新的重复行,按需可改为'first'保留最早的记录。
- 重置索引消除显示混淆
合并后的DataFrame可能存在重复索引,导致打印时行号和实际行数不符。重置索引后能直观查看真实数据量:
dataF = pd.concat([availableData, data]).drop_duplicates(subset=['timestamp'], keep='last').reset_index(drop=True)
- 提前验证去重结果
保存前先通过len(dataF)确认行数是否符合预期:
print(len(dataF)) # 预期输出720
若输出仍为1440,说明data和availableData本身没有重叠数据,需检查数据来源逻辑。
- 排查文件写入异常
极少数情况文件被其他进程占用会导致写入失败,可临时修改保存路径验证:
dataF.to_csv("datasets/1m_inf_temp.csv", index=False)
内容的提问来源于stack exchange,提问作者anyone
相关产品推荐
相关产品推荐

