SettingWithCopyWarning: 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 caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy super().__setitem__(key, value)
时间: 2024-03-12 20:46:39 浏览: 282
pandas DataFrame 警告(SettingWithCopyWarning)的解决
5星 · 资源好评率100%
这个警告通常是由pandas DataFrame的链式索引引起的。链式索引是指使用多个索引操作来选择DataFrame中的子集。例如,以下代码使用链式索引:
```
df[df['column1'] > 0]['column2'] = new_value
```
这会生成DataFrame的副本并更改副本,而不是更改原始DataFrame。因此,pandas会发出一个警告,建议您使用.loc访问器:
```
df.loc[df['column1'] > 0, 'column2'] = new_value
```
这将直接更改原始DataFrame,而不是生成副本。
如果您仍然想要使用链式索引,可以通过调用.copy()方法来明确地复制DataFrame,以避免警告:
```
df[df['column1'] > 0]['column2'] = new_value
df = df.copy()
```
请注意,这样做会复制整个DataFrame,因此可能会对内存产生影响。因此,最好使用.loc访问器或其他避免链式索引的方法来修改DataFrame。
阅读全文