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

使用df.filter获取DataFrame切片后修改触发SettingWithCopyWarning问题

SettingWithCopyWarning 触发原因及解决方法

你遇到的警告,核心原因是 df.filter(regex='_D') 返回的可能是原DataFrame的视图,而非完全独立的副本——哪怕你把它赋值给了新变量df_dddd,它底层还是和原df共享数据。当你对这个视图执行inplace=True的修改时,pandas会抛出警告,因为这种操作可能意外改动原数据,或者无法保证修改的是独立的数据集。

解决这个问题有两种简单方法:

  • 方法一:显式生成副本
    在filter后加上.copy(),强制创建独立的DataFrame:
    df_dddd = df.filter(regex='_D').copy()
    df_dddd.drop([1], axis=0, inplace=True)
    
  • 方法二:放弃inplace=True,用重新赋值替代(更推荐)
    避免inplace操作的歧义,直接生成新的DataFrame:
    df_dddd = df.filter(regex='_D')
    df_dddd = df_dddd.drop([1], axis=0)
    

显式拷贝能彻底切断和原数据的关联,而重新赋值的方式更符合pandas的设计逻辑,也能避免视图带来的不确定性。

内容的提问来源于stack exchange,提问作者FluidMechanics Potential Flows

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:30:45