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

使用pd.read_csv读取后为何出现额外‘0’行?如何避免?

解决保存Series为CSV后读取出现额外行的问题

嘿,我来帮你搞定这个烦人的额外行问题!你看到的那行名为‘0’的内容,其实是pandas处理Series的CSV保存和读取时,表头与索引的默认规则导致的,咱们一步步理清楚:

问题原因

你的df1是一个pandas.Series,当执行df1.to_csv("df1.csv")时,pandas默认会把Series的索引作为第一列,值作为第二列。因为你没给这个Series指定列名,保存后的CSV文件第一行会自动加上一个默认列名0(对应值的列),而索引列没有列名。

之后你用pd.read_csv("df1.csv", index_col=0, header=None)读取时,header=None告诉pandas“不要把第一行当表头”,但CSV里的第一行其实是默认的列名0,这就被pandas当成了一条数据行,于是就出现了那行多余的0。

几种解决方法

方法1:保存时直接关闭表头输出

既然Series本身不需要额外表头,保存时直接禁用表头输出,这样CSV里就只有索引和值的数据行:

# 保存时添加header=False参数
df1.to_csv("df1.csv", header=False)
# 读取方式不变
df1 = pd.read_csv("df1.csv", index_col=0, header=None)

方法2:读取时正确识别表头

如果已经保存了带默认表头的CSV,也可以调整读取参数,让pandas把第一行当成表头而非数据:

# 去掉header=None,让pandas自动识别第一行为表头
df1 = pd.read_csv("df1.csv", index_col=0)

如果不需要这个默认的列名0,之后可以删掉:

df1 = df1.rename(columns={0: None})

方法3:提前给Series指定列名

从源头避免混乱,创建Series时给它设置一个列名,这样保存后的CSV会有清晰的表头:

# 创建Series时指定name参数
d1 = {'a' : 1, 'b' : 2, 'c' : 3}
df1 = pd.Series(d1, name='values')
# 正常保存
df1.to_csv("df1.csv")
# 读取时指定索引列即可
df1 = pd.read_csv("df1.csv", index_col=0)

这样读取后的结果就和你最初的Series完全一致,不会出现任何额外行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:07:17