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

如何将Dataframe中指定列名列表的列名改为大写?

问题原因与解决方案

你的代码没生效的核心原因是:df[cols_to_cap]返回的是原DataFrame的副本,修改副本的列名不会同步到原DataFrame上。Pandas默认对索引切片返回副本,所以你修改的只是临时生成的子DataFrame,原数据完全没变化。

正确实现方式

方法1:用rename直接修改原DataFrame(推荐)

这是最简洁高效的方式,通过字典映射指定列名的修改规则:

# 生成列名映射字典:原列名 -> 大写列名
col_mapping = {col: col.upper() for col in cols_to_cap}
# 应用修改,inplace=True表示直接修改原DataFrame,无需重新赋值
df.rename(columns=col_mapping, inplace=True)

如果不想原地修改,也可以重新赋值给df:

df = df.rename(columns=col_mapping)

方法2:修改子集后合并回原DataFrame(不推荐,仅作思路展示)

如果你一定要先处理子集再合并,可按以下步骤操作:

# 提取子集并修改列名
subset = df[cols_to_cap].copy()  # 显式生成副本避免视图警告
subset.columns = subset.columns.str.upper()
# 删除原DataFrame中的目标列,再合并修改后的子集
df = df.drop(cols_to_cap, axis=1).join(subset)

补充说明

Pandas的视图/副本机制是常见坑点:当你用df[cols]这类方式取子集时,Pandas可能返回视图也可能返回副本,具体取决于数据结构和操作。但无论哪种情况,直接修改子集的列名都无法影响原DataFrame,所以推荐用rename方法直接操作原数据,避免这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:40:28