SettingWithCopyWarning even when using .loc[row_indexer,col_indexer] = value(即使在使用.loc[行索引器,列索引器]=值时,也使用SettingWithCopyWarning)
本文介绍了即使在使用.loc[行索引器,列索引器]=值时,也使用SettingWithCopyWarning的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的代码中获得SettingWithCopyWarning
:的代码行之一
value1['Total Population']=value1['Total Population'].replace(to_replace='*', value=4)
然后我更改为:
row_index= value1['Total Population']=='*'
value1.loc[row_index,'Total Population'] = 4
这仍然会给出相同的警告。我如何摆脱它?
另外,我收到了与我使用过的convert_objects(convert_numeric=True)函数相同的警告,有什么方法可以避免这种情况吗?
value1['Total Population'] = value1['Total Population'].astype(str).convert_objects(convert_numeric=True)
这是我收到的警告消息:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
推荐答案
如果您使用.loc[row,column]
,但仍然收到相同的错误,可能是因为复制了另一个数据框。您必须使用.copy()
。
这是一个逐步复制错误的过程:
import pandas as pd
d = {'col1': [1, 2, 3, 4], 'col2': [3, 4, 5, 6]}
df = pd.DataFrame(data=d)
df
# col1 col2
#0 1 3
#1 2 4
#2 3 5
#3 4 6
创建新列并更新其值:
df['new_column'] = None
df.loc[0, 'new_column'] = 100
df
# col1 col2 new_column
#0 1 3 100
#1 2 4 None
#2 3 5 None
#3 4 6 None
我没有收到错误。但是,让我们根据前面的数据框创建另一个数据框:
new_df = df.loc[df.col1>2]
new_df
#col1 col2 new_column
#2 3 5 None
#3 4 6 None
现在,使用.loc
,我将尝试以相同的方式替换一些值:
new_df.loc[2, 'new_column'] = 100
然而,我又收到了这个令人讨厌的警告:
正在尝试对DataFrame中切片的副本设置值。尝试 改用.loc[行索引器,列索引器]=值 请参阅文档中的注意事项: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
解决方案
创建新数据框时使用.copy()
将解决该警告:
new_df_copy = df.loc[df.col1>2].copy()
new_df_copy.loc[2, 'new_column'] = 100
现在,您不会收到任何警告!
如果您的数据框是使用筛选器在另一个数据框上创建的,请始终使用.copy()
。
这篇关于即使在使用.loc[行索引器,列索引器]=值时,也使用SettingWithCopyWarning的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:即使在使用.loc[行索引器,列索引器]=值时,也使用SettingWithCopyWarning


基础教程推荐
猜你喜欢
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01