You need to enable JavaScript to run this app. Pandas赋值DataFrame时出现SettingWithCopyWarning警告如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Pandas赋值DataFrame时出现SettingWithCopyWarning警告如何解决

Pandas SettingWithCopyWarning 解决方案

根因说明

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead
该警告触发的核心原因是你操作的df_test_arima是从其他DataFrame对象中拆分出来的切片,Pandas无法确认该对象是原数据的视图还是独立副本,直接新增/修改列存在误改原数据的潜在风险,因此触发预警。

可行解决方法

  • 方案1:生成df_test_arima时显式声明为独立副本
    如果你是通过取子集的方式生成df_test_arima,在生成代码末尾添加.copy()即可创建完全独立的DataFrame,后续赋值不会触发警告:

    # 原生成df_test_arima的代码后加.copy(),示例如下
    df_test_arima = 原DataFrame[筛选条件].copy()
    # 之后正常赋值即可
    df_test_arima['ACTUAL'] = y_test
    
  • 方案2:按警告提示使用.loc语法赋值
    不需要修改df_test_arima的生成逻辑,直接调整赋值语句即可:

    df_test_arima.loc[:, 'ACTUAL'] = y_test
    

    其中:表示匹配全部行,显式指定行、列索引的赋值方式会被Pandas判定为合法操作,不会触发警告。
    你拆分数据时设置了shuffle=False,y_test的索引和df_test_arima的索引完全对齐,该赋值操作不会出现数据错位问题。

  • 方案3:临时关闭警告(仅适合调试场景,不推荐常规使用)
    如果你确认当前操作不会引发数据一致性问题,可以临时关闭该类警告:

    import pandas as pd
    # 关闭SettingWithCopyWarning警告
    pd.set_option('mode.chained_assignment', None)
    
    # 此处执行赋值操作
    df_test_arima['ACTUAL'] = y_test
    
    # 操作完成后可恢复默认警告设置
    pd.set_option('mode.chained_assignment', 'warn')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 11:15:06