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

Pandas读取自动生成CSV文件时缺失列的问题求助

解决Pandas读取自动生成CSV时DATE列缺失的问题

自动生成的CSV常因编码、隐藏字符、非标准格式等问题导致Pandas解析错位,以下是针对性解决方案:

1. 处理UTF-8 BOM头问题

很多自动生成的CSV会带UTF-8 BOM头,Pandas默认读取会把BOM当作DATE列名的一部分,引发列错位。直接指定编码为utf-8-sig即可解决:

csvFile = pd.read_csv(original_file, encoding='utf-8-sig')

2. 修复换行符/分隔符异常

自动生成文件可能用了非标准换行符(如\r)或分隔符(如制表符\t),可通过以下方式处理:

  • 指定换行符:
csvFile = pd.read_csv(original_file, lineterminator='\n')
  • 自动检测分隔符:
csvFile = pd.read_csv(original_file, sep=None, engine='python')

3. 清理表头隐藏控制字符

部分自动生成文件的表头行含不可见控制字符,导致Pandas识别表头错误。先读取文件清理表头,再解析:

import re
from io import StringIO

with open(original_file, 'r', encoding='utf-8-sig') as f:
    lines = f.readlines()
    if lines:
        # 移除表头的非打印控制字符
        lines[0] = re.sub(r'[\x00-\x1F\x7F]', '', lines[0])

csvFile = pd.read_csv(StringIO(''.join(lines)))

4. 强制指定列结构

如果以上方法无效,直接指定列名强制Pandas按预期结构读取:

csvFile = pd.read_csv(original_file, names=['DATE', 'TIME', 'FILE NAME'], header=0)
# 若表头已损坏,跳过表头重新指定列名:
# csvFile = pd.read_csv(original_file, skiprows=1, names=['DATE', 'TIME', 'FILE NAME'])

修改后的完整代码

from pathlib import Path
import pandas as pd
import re
from io import StringIO

original_file = "目标CSV文件路径"

# 预处理文件,清理BOM和表头控制字符
with open(original_file, 'r', encoding='utf-8-sig') as f:
    lines = f.readlines()
    if lines:
        lines[0] = re.sub(r'[\x00-\x1F\x7F]', '', lines[0])

# 读取处理后的内容
csvFile = pd.read_csv(StringIO(''.join(lines)))

# 保存为XLSX
newFileName = f"{Path(original_file).stem}.xlsx"
with pd.ExcelWriter(newFileName) as resultExcelFile:
    csvFile.to_excel(resultExcelFile, index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:22:34