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

Pandas导入Excel指定列时列名与列序号获取数据NaN结果互换问题

问题成因说明

1. 第一段代码(header=0)的输出逻辑

  • read_excel指定header=0时,会将Excel工作表的第一行作为DataFrame的列名,此时读取得到的data的列名就是Excel首行的内容,包含Record Type这个列名,但不存在名为1的列。
  • 你调用pd.DataFrame(data, columns=[1,'Record Type'])时,columns参数是按列名匹配而非列位置匹配,找不到名为1的列就会自动填充NaN,Record Type列存在所以正常返回内容,就得到了你看到的第一组输出。

2. 第二段代码(header=None)的输出逻辑

  • read_excel指定header=None时,不会把Excel的任何行作为列名,pandas会自动生成从0开始的整数作为列名,此时data的列名为0、1、2……,不存在名为Record Type的列,原本Excel首行的Record Type会作为第0行第1列的普通数据存在。
  • 同样按列名匹配的规则,名为1的列存在可以正常返回内容,找不到Record Type列就会整列填充NaN,就出现了和第一组输出NaN位置互换的情况。

正确按位置选列的写法

如果你要按位置取第1列(pandas列索引从0开始),应该用iloc方法,示例:

# header=0时取第1列
df = data.iloc[:, [1]]
# 如需重命名列可补充:df.columns = ['自定义列名']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:54:03