鱼C论坛

 找回密码
 立即注册
查看: 2448|回复: 10

求助大佬们,python中的SettingWithCopyWarning警告如何处理?

[复制链接]
发表于 2020-3-15 19:00:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大概是因为我写了这么一行:df["HUMI_new3"] = df["HUMI_NEW"].copy()
【本意是想复制数据】
后续对副本数据进行处理的时候,就出现了这样的警告:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
想请教一下大佬们,这种问题该如何解决?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-15 19:05:41 | 显示全部楼层
为啥要用copy?
直接=不好吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-15 19:07:14 | 显示全部楼层
之前没加copy就是直接等于的,出现了警告,加了copy还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-15 19:07:48 | 显示全部楼层
qiuyouzhi 发表于 2020-3-15 19:05
为啥要用copy?
直接=不好吗?

之前没加copy就是直接等于的,出现了警告,加了copy还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 19:13:03 | 显示全部楼层
常小乐 发表于 2020-3-15 19:07
之前没加copy就是直接等于的,出现了警告,加了copy还是不行

能把代码发全嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-15 19:13:50 | 显示全部楼层
qiuyouzhi 发表于 2020-3-15 19:13
能把代码发全嘛?

是系统警告代码吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 19:16:44 | 显示全部楼层
常小乐 发表于 2020-3-15 19:13
是系统警告代码吗?

不是,是你写的代码
警告代码我看了没用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-15 19:16:51 | 显示全部楼层
qiuyouzhi 发表于 2020-3-15 19:13
能把代码发全嘛?

C:/Users/常乐/PycharmProjects/new1/new1.py:81: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas ... -view-versus-a-copy
  df["PM_Dongsi1"][i] = 500
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-15 19:19:02 | 显示全部楼层
qiuyouzhi 发表于 2020-3-15 19:16
不是,是你写的代码
警告代码我看了没用

df["HUMI_new3"] = df["HUMI_NEW"].copy()
for i in index_list1:
    df["HUMI_new3"][i] = int(HUMI_mean + 3 * HUMI_std)

df["PRES_new3"] = df["PRES_NEW"].copy()
for i in index_list2:
    df["PRES_new3"][i] = int(PRES_mean + 3 * PRES_std)

df["TEMP_new3"] = df["TEMP_NEW"].copy()
for i in index_list3:
    df["TEMP_new3"][i] = int(TEMP_mean + 3 * TEMP_std)

这段出现了警告,前面代码挺长的,要发吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-15 19:32:47 | 显示全部楼层
常小乐 发表于 2020-3-15 19:19
df["HUMI_new3"] = df["HUMI_NEW"].copy()
for i in index_list1:
    df["HUMI_new3"] = int(HUMI_mea ...

用一个中间变量
b = df['HUMI_NEW"]
df["HUMI_new3"] = b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-15 19:52:09 | 显示全部楼层

不好意思,我的代码好像粘错了,不是这段出警告了,抱歉抱歉,是下面这两段:
print("5==========================================================================")
#5.对PM_Dongsi、PM_Dongsihuan、PM_Nongzhanguan三列中超500的数据修改为500
index_list4 = df[df.PM_Dongsi > 500].index.tolist()
index_list5 = df[df.PM_Dongsihuan > 500].index.tolist()
index_list6 = df[df.PM_Nongzhanguan > 500].index.tolist()
print("there are {} items:".format(len(index_list4)))
print(index_list4)
print("there are {} items:".format(len(index_list5)))
print(index_list5)
print("there are {} items:".format(len(index_list6)))
print(index_list6)

for i in index_list4:
    df["PM_Dongsi"][i] = 500
for i in index_list5:
    df["PM_Dongsihuan"][i] = 500
for i in index_list6:
    df["PM_Nongzhanguan"][i] = 500
print("6==========================================================================")
#6.修改cbwd列中值为“cv”的单元格,用其后项填充
index_list7 = df[df.cbwd == 'cv'].index.tolist()
print("there are {} items:".format(len(index_list7)))
print(index_list7)

for i in index_list7:
    df["cbwd"][i]=np.nan
df["cbwd_new_bfill"]=df["cbwd"].bfill()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 22:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表