使用pandas读取12000行txt文件行数不符的问题求助
解决pandas读取txt文件行数不符的问题
先确认文件实际行数
先排查文件本身是否真的有12000行,用系统命令统计:
- Windows命令提示符:
find /c /v "" your_file.txt - Linux/macOS终端:
wc -l your_file.txt
如果统计结果不是12000,说明文件生成环节就有问题,得先检查生成代码。
调整read_csv参数适配数据格式
默认参数可能跳过或误解析行,试试以下组合:
- 强制保留空行(避免被自动跳过):
import pandas as pd df = pd.read_csv('your_file.txt', header=None, skip_blank_lines=False) - 指定兼容空格的分隔符(匹配示例中逗号后带空格的格式):
df = pd.read_csv('your_file.txt', header=None, sep=',\s*', engine='python') - 开启错误行警告,定位异常行:
运行后如果有警告,会提示哪些行不符合3列格式,方便针对性修复。df = pd.read_csv('your_file.txt', header=None, on_bad_lines='warn')
适配不同系统的换行符
不同系统的换行符(Windows\r\n、Linux/macOS\n)可能导致行数识别错误,手动指定换行符试试:
# 适配Windows换行符 df = pd.read_csv('your_file.txt', header=None, lineterminator='\r\n') # 或适配Linux/macOS换行符 df = pd.read_csv('your_file.txt', header=None, lineterminator='\n')
逐行验证数据格式
如果以上方法都无效,用代码逐行检查文件内容,统计有效行数和错误行:
count_valid = 0 invalid_lines = [] with open('your_file.txt', 'r') as f: for line_num, line in enumerate(f, 1): stripped_line = line.strip() # 跳过空行(如果不需要保留的话) if not stripped_line: continue # 按逗号分割列 columns = [col.strip() for col in stripped_line.split(',')] if len(columns) != 3: invalid_lines.append((line_num, stripped_line)) else: count_valid += 1 print(f"有效行数:{count_valid}") print(f"前10条错误行:{invalid_lines[:10]}")
通过输出结果可以直接定位到格式异常的行,进而修复文件内容。
内容的提问来源于stack exchange,提问作者Pepe Dziobak
相关产品推荐
相关产品推荐

