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

Pandas修改行部分值为行均值时出现SettingWithCopyWarning的解决方法

解决Pandas SettingWithCopyWarning警告的方案

你的代码触发警告的核心问题是链式索引操作——sample['marketcap'][1::]这种连续索引的方式,Pandas无法确定你修改的是原DataFrame的视图还是独立副本,所以抛出警告。

直接用以下两种方式修正即可:

方式一:用.loc显式定位赋值(推荐)

.loc是Pandas官方推荐的安全索引方式,能明确指定要修改的行和列,消除歧义:

# 复制marketcap列到新列10113
sample[10113] = sample['marketcap'].copy()
# 计算索引1及之后的marketcap均值
marketcap_mean = sample.loc[1:, 'marketcap'].mean()
# 用.loc赋值,避免链式索引
sample.loc[1:, 'marketcap'] = marketcap_mean

方式二:确保sample是独立副本(如果sample来自其他DF的切片)

如果你的sample是从另一个大DataFrame切片得到的(比如sample = df[df['some_col'] > 0]),它本质上是原DF的视图,先转成副本再操作:

# 先将sample转为独立副本,切断与原DF的关联
sample = sample.copy()
# 后续操作和方式一一致
sample[10113] = sample['marketcap'].copy()
marketcap_mean = sample.loc[1:, 'marketcap'].mean()
sample.loc[1:, 'marketcap'] = marketcap_mean

原代码的错误在于连续使用方括号索引,这种操作可能导致Pandas无法追踪数据修改的源头,用.loc替代链式索引,或者提前转副本,就能彻底消除这个警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:15:39