熊猫:设置为CopyWarning[重复]

这个问题在这里已经有答案了
如何处理大熊猫中的复制警告设置

(18个答案)

两年前关闭的

我想用NaN替换大于任意数字(本例中为100)的Pandas数据帧中的值(因为如此大的值表示实验失败)。以前,我用它来替换不需要的值:

sve2_all[sve2_all['Hgtot ng/l']>100]=np.nan

但是,我得到了以下错误:

-c:3:SettingWithCopyWarning:试图在数据帧切片的副本上设置值。
尝试改用.loc[row\u index,col\u indexer]=value
C:\Users\AppData\Local\enthund\Canopy32\User\lib\site packages\pandas\core\index.py:346:SettingWithCopyWarning:试图在数据帧切片的副本上设置值。
尝试改用.loc[row\u index,col\u indexer]=value
self.obj[item]=s

从这个StackExchange问题来看,似乎有时可以忽略这个警告,但我无法很好地跟踪讨论,以确定这是否适用于我的情况。警告是否基本上让我知道我将覆盖数据帧中的一些值

编辑:据我所知,一切都按其应有的方式进行。作为后续行动,我的替代价值观的方法是否非标准?有没有更好的方法来替换值

正如错误消息中所建议的,您应该使用loc来执行此操作:

sve2_all.loc[sve2_all['Hgtot ng/l']>100]=np.nan

此警告用于阻止您修改副本(此处sve2_all[sve2_all['Hgtot ng/l']>100]可能是一个副本,如果是,任何修改都不会改变原始框架。可能是在某些情况下它工作正常,但pandas不能保证它在所有情况下都能工作……使用风险自负(请考虑您自己的警告!;)。

发表评论