如何避免SettingWithCopyWarning并对DataFrame指定列做去均值处理?
解决SettingWithCopyWarning的实用方法
出现SettingWithCopyWarning通常是因为你操作的DataFrame可能是另一个DataFrame的切片视图,而非独立对象。以下几种方法可以实现需求且避免警告:
方法一:使用.loc明确指定操作原DataFrame的列
用loc[:, 列名列表]的方式直接定位原DataFrame的列,避免链式索引导致的视图/副本混淆:df.loc[:, ['a','b','d']] = df[['a','b','d']] - df[['a','b','d']].mean()方法二:用assign生成新DataFrame(不修改原数据)
如果不想原地修改原DataFrame,可使用assign方法返回处理后的新对象,完全规避警告:df = df.assign(**{col: df[col] - df[col].mean() for col in ['a','b','d']})方法三:先复制DataFrame确保操作独立对象
先将df复制为独立对象,再执行原逻辑:df = df.copy() df[['a','b','d']] = df[['a','b','d']] - df[['a','b','d']].mean()
内容的提问来源于stack exchange,提问作者Uqhah
相关产品推荐
相关产品推荐

