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

如何在Pandas DataFrame中使用数字及特殊格式列名访问数据

解决Pandas中访问数字/带点列名的问题

我懂你遇到的这个麻烦——当Excel里的列名是纯数字(比如2008)或者像'2008.1'这种带点的字符串时,Pandas的点语法确实会直接失效,这本质是因为Python的标识符规则不允许以数字开头,也不能把.作为属性名的一部分(点语法本质是访问对象的属性,属性名得符合Python标识符规范)。

不用修改原始Excel列名也能轻松解决,直接用方括号索引就可以,这是访问这类特殊列名的标准操作方式:

正确的访问代码示例

  • 针对纯数字列名2008:

    data_2008 = subset_by_provider[2008].tolist()
    

    这里要注意:如果通过subset_by_provider.columns查看后,发现列名是字符串类型(比如'2008'),就改成字符串索引:subset_by_provider['2008'].tolist()。

  • 针对带点的列名'2008.1':

    data_2008_1 = subset_by_provider['2008.1'].tolist()
    

    不管这个列名在索引里是什么类型,用字符串形式放在方括号里都能稳定访问。

为什么点语法行不通?

点语法df.column_name对column_name有严格要求:

  • 不能以数字开头(所以df.2008直接触发语法错误)
  • 不能包含.、空格、特殊字符等(df.'2008.1'本身语法就不对,就算去掉引号写成df.2008.1,Python会把它解析成访问df.2008对象的.1属性,完全偏离你的需求)

所以遇到这类特殊列名,方括号索引是最稳妥的选择,完全不需要改动原始Excel文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:08:09