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

使用Pandas读取列数不规则的CSV文件报错的原因及解决方法咨询

Pandas读取列数不规则的CSV文件报错的原因及解决方法咨询

嗨,我来帮你分析并解决这个问题:

报错原因

你的CSV文件每行的字段数量不一致,这就是触发报错的核心原因。

Pandas默认会根据CSV的第一行(这里第一行是"==CNAME==",仅1个字段)推断整个文件的列数,认定这是个单列文件。但到第3行("Tool Name","v2.1")突然出现了2个字段,和之前推断的列数不匹配,就触发了Error tokenizing data的错误——它期望每行都是1个字段,结果看到了2个,自然解析失败。

你之前尝试指定分隔符没用,是因为问题根本不是分隔符识别错误,而是列数不统一的问题。

解决方法

根据不同的需求,我给你两种实用的处理方案:

方案1:保留所有行的原始结构(不管列数多少)

如果你想把CSV里的所有内容原样导入Excel,包括空行和列数不一的行,可以用Python内置的csv模块先逐行读取处理,再转成DataFrame:

import pandas as pd
import os
import csv

def convert_csv_to_xlsx(csv_file_path):
    csv_file = r"C:\Users\aztec\Desktop\del.csv"
    rows = []
    # 用csv模块逐行读取,能正确处理带引号的字段分割
    with open(csv_file, 'r', encoding='utf-8') as f:
        reader = csv.reader(f)
        for row in reader:
            rows.append(row)
    # 转成DataFrame,短行自动用NaN填充缺失列
    df_csv = pd.DataFrame(rows)
    excel_file = os.path.splitext(csv_file)[0] + '.xlsx'
    # 导出时不添加默认表头和索引,保持原始内容结构
    df_csv.to_excel(excel_file, index=False, header=False)
    return excel_file

方案2:只提取有效键值对行(过滤无效行)

如果你只需要CSV里那些类似"Tool Name","v2.1"的键值对数据,可以过滤掉只有1个字段或空的行:

import pandas as pd
import os
import csv

def convert_csv_to_xlsx(csv_file_path):
    csv_file = r"C:\Users\aztec\Desktop\del.csv"
    valid_rows = []
    with open(csv_file, 'r', encoding='utf-8') as f:
        reader = csv.reader(f)
        for row in reader:
            # 只保留有2个非空字段的有效行
            if len(row) == 2 and row[0].strip() and row[1].strip():
                valid_rows.append(row)
    # 转成带自定义列名的DataFrame
    df_csv = pd.DataFrame(valid_rows, columns=["属性", "值"])
    excel_file = os.path.splitext(csv_file)[0] + '.xlsx'
    df_csv.to_excel(excel_file, index=False)
    return excel_file

这种处理后,Excel里会只保留有用的键值对数据,比如姓名、邮箱、电话这些内容,结构更清晰易读。

备注:内容来源于stack exchange,提问作者Ξ R Λ Z Ξ R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:43:02