栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 前沿技术 > 大数据 > 大数据系统

【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
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/601339.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号