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

从URL导入UCI的MPG数据集时Carname列为NaN的原因及解决方案

问题原因
  • 原始MPG数据集的Carname列本身包含内部空格,你当前配置的单空格分隔+合并连续空格的规则,会把Carname内部的单个空格也识别为列分隔符,导致实际解析出来的列数远多于你定义的9列,pandas会自动丢弃多余列,你定义的Carname列没有对应匹配的数据,就被统一填充为NaN。
  • 你添加的comment='\t'参数属于冗余配置,原始数据不存在制表符开头的注释内容,该参数反而会干扰正常的字段解析逻辑。
修复方案

有两种常用的修复方式,任选其一即可:

方案1:调整分隔符规则

将分隔符设置为两个及以上的空格(原始数据的数值列之间都是用多个空格分隔,仅Carname内部为单个空格),同时指定python解析引擎支持正则分隔符:

import pandas as pd
# 从URL导入原始数据集
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data'
column_names = ['MPG', 'Cylinders', 'Displacement', 'Horsepower', 
                'Weight', 'Acceleration', 'Model Year', 'Origin',  'Carname']

data = pd.read_csv(url, names=column_names,
                   na_values='?',
                   sep=r'\s{2,}', # 匹配2个及以上空格作为分隔符
                   engine='python')
data.head(3)

方案2:使用固定宽度文件读取接口

该数据集本质是固定宽度格式的文本,直接用pandas的read_fwf接口读取更稳妥,不需要手动配置分隔符:

import pandas as pd

url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data'
column_names = ['MPG', 'Cylinders', 'Displacement', 'Horsepower', 
                'Weight', 'Acceleration', 'Model Year', 'Origin',  'Carname']

data = pd.read_fwf(url, names=column_names, na_values='?')
data.head(3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:18:04