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

为什么pandas的read_csv读取csv返回原始数据而非DataFrame

读取文件异常输出截图
使用pandas读取Advertising.csv文件时,所有原始数据被压缩到单列中,列内各值通过逗号分隔,异常输出如下:

,TV,radio,newspaper,sales
0   1,230.1,37.8,69.2,22.1
1   2,44.5,39.3,45.1,10.4
2   3,17.2,45.9,69.3,9.3
3   4,151.5,41.3,58.5,18.5
4   5,180.8,10.8,58.4,12.9

当前使用的读取代码:
df = pd.read_csv(file_path, "Advertising.csv")

问题根源

pd.read_csv()的第二个位置参数是用于指定列分隔符的sep参数,上述代码把文件名"Advertising.csv"传给了这个参数,pandas会将字符串"Advertising.csv"作为列分割标记解析文件,自然无法按逗号拆分字段,所有内容被挤到同一列。

修复方法

根据路径存储情况选择对应写法:

  • 若file_path已经是Advertising.csv的完整文件路径,直接传入即可:
import pandas as pd
df = pd.read_csv(file_path)
  • 若file_path是Advertising.csv所在的文件夹路径,先拼接出完整文件路径再传入,不要把文件名作为第二个独立参数传递:
import os
import pandas as pd
full_path = os.path.join(file_path, "Advertising.csv")
df = pd.read_csv(full_path)

补充优化

从输出样例可以看到csv第一列是无表头的自增序号,读取时可添加index_col=0参数将该列设为行索引,避免生成多余的无名列:

df = pd.read_csv(full_path, index_col=0)

读取完成后执行df.head()即可验证,正常会输出拆分好的TV、radio、newspaper、sales四列数据,对应行索引为原文件的序号列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:00:56