使用Python提取CSV带行号重复数据的pandas代码问题排查
问题原因
- CSV文件没有自定义表头,
pd.read_csv默认将文件第一行识别为列名,导致第一条数据被误判为列名,最终出现该条目反复出现在结果顶部的问题。 - pandas读取文件时自动生成的索引是从0开始的序列,和你需要的原始文件实际行号不匹配,导致导出的行号不符合预期。
- 你的CSV实际为单字段存储内容的格式,默认按逗号分隔的读取规则也可能引发内容识别异常。
修复方案
调整读取和导出的参数即可,修复后代码如下:
import pandas as pd # 指定无表头读取,避免第一行数据被识别为列名 df = pd.read_csv('sample_dup.csv', header=None, names=['content']) # 新增原始文件行号列,从1开始计数匹配实际行号 df['original_line_num'] = df.index + 1 # 筛选所有重复条目 dup_df = df[df.duplicated(subset='content', keep=False)] # 导出时取消pandas默认索引,仅保留自定义的行号和内容 dup_df.to_csv('dups.csv', index=False, encoding='utf-8-sig')
如果需要将内容拆分姓名和编号两个字段,可以额外增加拆分逻辑:
# 按多空格拆分内容为两列 df[['name', 'number']] = df['content'].str.split('\s+', expand=True)
内容的提问来源于stack exchange,提问作者user17335032
相关产品推荐
相关产品推荐

