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

如何使用.loc解决pandas的SettingWithCopyWarning警告?

警告含义解释

这个警告的核心触发原因是你当前操作的df并非根DataFrame,而是之前从其他DataFrame中取切片生成的对象,pandas无法确认这个切片对象是原始数据的视图还是独立副本,也不确定你是要修改当前切片还是同步修改原始DataFrame,因此抛出提示避免你出现预期外的逻辑错误。numpy中不会触发同类提示,是因为numpy没有针对数组切片做视图/副本的修改风险自动校验机制。

消除警告的方案

根据你的实际使用需求选对应方案即可:

  • 如果你仅需要操作当前这个切片df,不需要把修改同步到原始的大DataFrame:
    生成切片的时候主动调用copy()声明创建独立副本即可,比如你之前生成df的代码如果是df = raw_df[["Close", "Open"]],修改为df = raw_df[["Close", "Open"]].copy(),之后你原来的赋值代码df["Target"] = (df["Close"] - df["Open"])/df["Open"]就可以正常运行不会触发警告。
  • 如果你需要把新增的Target列同步到原始的大DataFrame:
    直接用loc操作原始DataFrame即可,代码如下:
    raw_df.loc[:, "Target"] = (raw_df["Close"] - raw_df["Open"]) / raw_df["Open"]
    
    如果你不想修改之前生成切片的逻辑,也可以直接修改当前的赋值语句为loc写法,也能避免警告:
    df.loc[:, "Target"] = (df["Close"] - df["Open"]) / df["Open"]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:45:00