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

基于条件用对应产品均值替换DataFrame中Price列无效值并规避警告

报错原因

你出现SettingWithCopyWarning的核心原因是使用了链式索引df.loc[i]["Price"],这种写法下pandas无法判断你操作的是原始DataFrame还是它的切片视图,因此抛出警告,且赋值操作大概率不会实际生效到原始DataFrame上。

正确实现方案

优先推荐向量化操作,比遍历索引效率更高,也不会触发警告:

# 定义产品均值映射字典
mean_prices_dict = {"Apple": 4.50, "Orange": 5.00, "Banana": 2.00}

# 生成每行产品对应的均值
product_mean = df["Product"].map(mean_prices_dict)
# 仅替换Price<=0的行,其余行保留原值
df["Price"] = df["Price"].where(df["Price"] > 0, product_mean)

如果需要保留遍历写法,调整.loc的传参方式,将列名作为第二个参数传入,避免链式索引即可:

for i in df[df["Price"] <= 0].index:
    df.loc[i, "Price"] = mean_prices_dict[df.loc[i, "Product"]]

最终效果

你提供的示例数据执行后输出结果如下:

IDProductPrice
1Apple4.50
2Orange5.00
1Banana2.00
2Apple3.99

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:42:00