使用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
相关产品推荐
相关产品推荐

