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

pandas DataFrame选择指定列自动重命名并保留其余列问题

问题原因

你触发警告的核心原因是gini.iloc[:, 2:]返回的是原DataFrame的视图,直接在视图上执行inplace=True的修改操作时,pandas无法确认你是否需要修改原数据,因此抛出SettingWithCopyWarning提示风险。

解决方案

方案1:直接修改全表列名(最简洁,无警告)

直接构造新的列名列表,前两列保留原名称,后续列按规则截取,直接赋值给gini.columns即可:

# 前2列保持不变,第3列及之后的列名取前4位
gini.columns = gini.columns[:2].tolist() + [col[:4] for col in gini.columns[2:]]

方案2:对全表使用rename方法

如果需要使用rename实现,可以直接对整个DataFrame操作,仅指定需要修改的列映射关系,不会触发警告:

# 构造需要修改的列名字典,仅针对第3列及之后的列
col_mapping = {col: col[:4] for col in gini.columns[2:]}
# 方式1:使用inplace参数
gini.rename(columns=col_mapping, inplace=True)

# 方式2:官方更推荐的赋值写法,无需使用inplace
# gini = gini.rename(columns=col_mapping)

两种方案都可以保留前两列的列名完全不变,同时完成后续年份列的重命名,不会出现拷贝警告。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:45:05