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

Pandas对比已有列生成新列触发SettingWithCopyWarning如何解决

pandas SettingWithCopyWarning 问题解决方法

警告原因

该警告触发的核心原因是当前使用的occ_2019_pe不是独立的DataFrame对象,而是从其他DataFrame通过切片、筛选操作得到的视图/副本,pandas无法确认你是否希望修改原DataFrame,因此弹出风险提示。

解决方法

  • 方法1:创建独立DataFrame副本
    在生成occ_2019_pe的筛选步骤末尾添加.copy(),明确将其声明为独立对象,后续修改不会触发警告,示例:

    # 若你之前通过筛选其他DataFrame得到occ_2019_pe,在末尾添加.copy()即可
    occ_2019_pe = original_df[original_df['筛选条件'] == '目标值'].copy()
    # 之后执行原有赋值代码即可
    occ_2019_pe['occ_change'] = np.where(occ_2019_pe['occ10']==occ_2019_pe['occ10_t1'], 0, 1)
    
  • 方法2:使用.loc显式赋值
    按照提示的规范写法,用.loc明确指定行、列索引进行赋值:

    occ_2019_pe.loc[:, 'occ_change'] = np.where(occ_2019_pe['occ10']==occ_2019_pe['occ10_t1'], 0, 1)
    
  • 方法3:简化列生成逻辑
    不需要调用np.where也可以实现相同逻辑,直接将布尔判断结果转为整数即可,代码更简洁:

    occ_2019_pe['occ_change'] = (occ_2019_pe['occ10'] != occ_2019_pe['occ10_t1']).astype('int')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:45:03