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

如何通过列标题名称读取Excel指定列至DataFrame?

解决pandas read_excel通过列名指定读取列的问题

我明白你的困扰——用read_csv可以直接通过列名列表指定要读取的列,但read_excel这么做却返回空DataFrame,确实有点坑。这其实和pandas的版本以及usecols参数的历史行为有关,下面给你两种可行的解决方案:

方案1:升级pandas到较新版本

从pandas 0.24.0版本开始,read_excel的usecols参数已经支持直接传入字符串列名列表了。如果你能升级pandas,那你原来的代码就能正常工作:

import pandas as pd
# 直接传入列名列表即可
xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols=['ForeignKey'])

方案2:用筛选函数兼容旧版本

如果暂时不能升级pandas,你可以给usecols传入一个lambda函数来筛选列名,这样在旧版本中也能生效:

import pandas as pd
# 用lambda函数匹配目标列名
xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols=lambda x: x == 'ForeignKey')

如果需要同时读取多个列,只需要修改lambda的判断条件即可:

# 读取number和ForeignKey两列
xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2', usecols=lambda x: x in ['number', 'ForeignKey'])

额外注意点

  • 确保你传入的列名和Excel中Sheet2的列标题完全一致,包括大小写、空格等(比如Excel里如果是Foreign Key,你写ForeignKey就会匹配失败)。
  • 旧版本pandas中usecols只支持整数索引列表或筛选函数,这就是你直接传字符串列表返回空DataFrame的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:52:02