gpt4 book ai didi

python - Pandas :SettingWithCopyWarning

转载 作者:IT老高 更新时间:2023-10-28 21:01:09 25 4
gpt4 key购买 nike

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

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

但是,我收到以下错误:

-c:3: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
C:\Users\AppData\Local\Enthought\Canopy32\User\lib\site-packages\pandas\core\indexing.py:346: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
self.obj[item] = s

来自 this StackExchange question ,似乎有时可以忽略此警告,但我无法很好地遵循讨论以确定这是否适用于我的情况。警告基本上是让我知道我将覆盖 DataFrame 中的一些值吗?

编辑:据我所知,一切正常。作为后续,我替换值的方法是非标准的吗?有没有更好的方法来替换值?

最佳答案

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

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

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

关于python - Pandas :SettingWithCopyWarning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23002762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com