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

Pandas重命名DataFrame列后无法提取列的问题求助

解决Pandas重命名列后无法用点访问的问题

嗨,我来帮你排查下这个问题~

你遇到的核心问题在于修改列名的方式不规范,导致DataFrame内部的属性映射没有同步更新。咱们一步步拆解:

为什么直接改columns.values会出错?

Pandas里的DataFrame.columns是一个Index对象,它本质上是**不可变(immutable)**的。你通过bank_statement.columns.values[0] = 'Din'这种方式,虽然表面上修改了列名的显示值,但DataFrame内部用于支持.属性访问的映射关系并没有被正确更新——所以你用bank_statement.Din时,Pandas找不到对应的属性,就抛出了AttributeError。

不过你可以试试用方括号访问:bank_statement['Din'],大概率是能拿到数据的,但这终究不是规范的做法。

正确的重命名列方法

推荐用以下两种标准方式来修改列名,这样不管是.还是方括号访问都能正常工作:

方法1:使用rename()方法(推荐,更灵活)

可以指定要修改的列名映射,支持批量修改,还可以选择是否原地修改:

# 原地修改(不需要重新赋值)
bank_statement.rename(columns={bank_statement.columns[0]: 'Din'}, inplace=True)

# 或者不原地修改,赋值给新变量
bank_statement = bank_statement.rename(columns={bank_statement.columns[0]: 'Din'})

如果你知道原来第一列的具体名称(比如Unnamed: 0),也可以直接写:

bank_statement.rename(columns={'Unnamed: 0': 'Din'}, inplace=True)

方法2:重新赋值整个columns数组

把列名转成列表修改后,再重新赋值给columns:

# 把列名转成可修改的列表
cols = bank_statement.columns.tolist()
# 修改第一列的名字
cols[0] = 'Din'
# 重新赋值给DataFrame的columns
bank_statement.columns = cols

为什么读取CSV时能正常访问?

你读取CSV文件时,列名是Pandas从文件头直接读取并初始化的,这个过程中DataFrame已经正确建立了列名和属性的映射关系,所以用.访问自然没问题。

总结一下:避免直接修改columns.values,用Pandas提供的标准方法重命名列,就能解决这个问题啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:34:09