栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

即使使用.loc后,熊猫仍会收到SettingWithCopyWarning

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

即使使用.loc后,熊猫仍会收到SettingWithCopyWarning

注意:自大熊猫0.24版本起,

is_copy
已弃用该版本,并将在以后的版本中将其删除。当private属性
_is_copy
存在时,下划线表示该属性不是公共API的一部分,因此不应依赖于此属性。因此,展望未来,沉默的唯一正确方法似乎
SettingWithCopyWarning
是在全球范围内这样做:

pd.options.mode.chained_assignment = None

complete =train.dropna()
执行时,
dropna
可能会返回一个副本,因此出于谨慎考虑,Pandas设置
complete.is_copy
为Truthy值:

In [220]: complete.is_copyOut[220]: <weakref at 0x7f7f0b295b38; to 'Dataframe' at 0x7f7eee6fe668>

这样一来,Pandas

complete['AgeGt15'] = complete['Age'] >15
便会在执行时警告您,您可能正在修改不会对起作用的副本
train
。对于初学者来说,这可能是一个有用的警告。就您而言,您似乎无意通过Modify进行
train
间接修改
complete
。因此,警告对您而言只是毫无意义的烦恼。

您可以通过以下方式使警告静音:

complete.is_copy = False       # deprecated as of version 0.24

这是不是让实际的复制更快,而且咬

SettingWithCopyWarning
在萌芽状态(点这里
_check_setitem_copy
被称为):

def _check_setitem_copy(self, stacklevel=4, t='setting', force=False):    if force or self.is_copy:        ...

如果您真的有信心知道自己在做什么,则可以

SettingWithCopyWarning
使用

pd.options.mode.chained_assignment = None # None|'warn'|'raise'

使警告静音的另一种方法是制作新副本:

complete = complete.copy()

但是,如果Dataframe很大,您可能不希望这样做,因为复制可能会花费大量时间和内存,并且如果您知道已经是副本,那么复制是毫无意义的(出于
警告警告的目的 除外)

complete



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660521.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号