如何解决此警告 SettingWithCopyWarning?

高拉夫

任何人都可以在我输入此代码时帮助我修复警告吗?

rh_can = df1.loc[(df1["hotel"] == "度假酒店") & (df1["is_canceled"] == 0)] ch_can = df1.loc[(df1["hotel"] == "城市酒店") & (df1["is_canceled"] == 0)]

rh_can['adr_pp'] = rh_can['adr'] / (rh_can['adults'] + rh_can['children']) ch_can["adr_pp"] = ch_can["adr"] / (ch_can["adults"] + ch_can["儿童"])

警告消息:/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:5:SettingWithCopyWarning:试图在数据帧的切片副本上设置值。尝试改用 .loc[row_indexer,col_indexer] = value

请参阅文档中的注意事项:https ://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy """

懒惰的

如果使用df.loc函数,它会返回一个指向与条件对应的数据的视图。如果返回的实例被更新,源数据框也将被更新。

发生此错误是为了防止意外修改源数据。该错误告诉您使用源实例的索引而不是视图实例来更新值。

如果您不想更新源数据框,则应使用复制功能创建新的数据框。

rh_can = df1.loc[(df1["hotel"] == "Resort Hotel") & (df1["is_canceled"] == 0)].copy()
ch_can = df1.loc[(df1["hotel"] == "City Hotel") & (df1["is_canceled"] == 0)].copy()

rh_can['adr_pp'] = rh_can['adr'] / (rh_can['adults'] + rh_can['children'])
ch_can["adr_pp"] = ch_can["adr"] / (ch_can["adults"] + ch_can["children"])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章