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

使用LabelEncoder处理数据集遇TypeError及CSV读取异常求助

解决CSV读取报错与LabelEncoder TypeError问题

我来帮你搞定这两个遇到的问题:


一、CSV读取列数不匹配报错(Error tokenizing data)

你遇到的Expected 14 fields in line <...>, saw 15错误,是因为数据里某一行的字段数量和表头(14列)不一致,大概率是数据里的逗号被当成了分隔符(比如某单元格内容带逗号但没加引号)。可以试试这些办法:

  • 跳过错误行:用pandas读取时,加上参数跳过格式错误的行:
    # 新版pandas(1.4.0+)用这个
    pd.read_csv('your_data.csv', skiprows=10, on_bad_lines='skip')
    # 旧版pandas用这个
    pd.read_csv('your_data.csv', skiprows=10, error_bad_lines=False)
    
  • 指定正确的引号处理规则:如果是带引号的单元格导致的问题,加上quoting参数:
    import csv
    pd.read_csv('your_data.csv', skiprows=10, quoting=csv.QUOTE_ALL)
    
  • 确认分隔符:有时候数据可能用制表符或其他符号分隔,检查后指定sep参数,比如sep='\t'。

二、LabelEncoder的TypeError问题

data.apply(LabelEncoder().fit_transform)报错是因为LabelEncoder只能处理单列的一维数据,而apply如果直接作用于整个DataFrame,会把每一行/列当成数组传入,导致类型不匹配,而且LabelEncoder输出的是整数,不是浮点数。正确的做法是单独处理字符串列:

  1. 先筛选出数据里的字符串类型列,避免对数值列做无效转换
  2. 对每个字符串列单独应用LabelEncoder,按需转成浮点数

示例代码:

from sklearn.preprocessing import LabelEncoder
import pandas as pd

# 读取处理好的数据集(先解决上面的CSV读取问题)
data = pd.read_csv('your_data.csv', skiprows=10, on_bad_lines='skip')

# 筛选出所有字符串类型的列
string_columns = data.select_dtypes(include=['object']).columns

# 遍历处理每个字符串列
label_encoder = LabelEncoder()
for col in string_columns:
    # 先转换为整数,再转为浮点数(如果需要的话)
    data[col] = label_encoder.fit_transform(data[col]).astype(float)

另外提醒下:如果是处理特征列,LabelEncoder更适合有序分类变量;如果是无序分类变量,推荐用OneHotEncoder,避免模型错误地认为编码后的数值有大小关系。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:49:48