【pandas警告】SettingwithCopyWarning出现的原因和解决方案

【pandas警告】SettingwithCopyWarning出现的原因和解决方案,第1张

【pandas警告】SettingwithCopyWarning出现的原因和解决方案 问题

*** 作 Dataframe 的时候有时会报SettingwithCopyWarning的警告,如下图:

然后吧,你按着他的提示,尝试改用.loc,结果还是没卵用。最后由于懒得检查,索性直接关闭所有警告信息:

import warnings
warnings.filterwarnings("ignore")

警告虽不是错误,但直接关闭警告肯定是不对。警告的作用就是告诉你虽然代码语法正确,但也会出现潜在的错误或问题。

原因

导致这条告警产生的原因,是由于pandas无法判断对原始Dataframe进行切片,产生的是视图还是副本。如果切片产生的是视图,则赋值 *** 作会修改原始Dataframe,如果产生的是副本,则不会修改原始的Dataframe。
看下面代码演示:

df = pd.Dataframe(np.arange(4*5).reshape(4, 5))
df  # 这是原始的Dataframe


下面的 *** 作就会报错:

# 这是一个切片视图
view_df = df.iloc[:,3:4]
# 对视图修改时就会报错
view_df.iloc[2:3,:]=0

解决方案

下面 *** 作就是正确的:

# 这是一个切片副本
copy_df = df.iloc[:,3:4].copy()  # copy一个副本
# 对副本修改时就不会报错
copy_df.iloc[2:3,:]=0

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5593826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存