Pandas。SettingWithCopyWarning的触发位置[英] Pandas: SettingWithCopyWarning trigger location

本文是小编为大家收集整理的关于Pandas。SettingWithCopyWarning的触发位置的处理方法,想解了Pandas。SettingWithCopyWarning的触发位置的问题怎么解决?Pandas。SettingWithCopyWarning的触发位置问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

使用 SettingWithCopyWarning,有时它指的是您的模块中触发警告的确切代码行(例如 这里)和其他时候没有(例如这里).

没有遍历每一行代码(如果您正在查看数百行代码,这听起来不太吸引人),有没有办法在假设警告没有的情况下查明触发警告的代码行返回那个信息?

我想知道这是否是警告中的一个错误,即返回警告而不查明触发它的特定代码.

Warning (from warnings module):
  File "C:\Python34\lib\site-packages\pandas\core\indexing.py", line 415
    self.obj[item] = s
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 the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

Python 3.4、Pandas 0.15.0

推荐答案

通过将 mode.chained_assignment 选项设置为 raise 而不是 warn,您可以让 pandas 提高 SettingWithCopyError 而不是 SettingWithCopyWarning.

import pandas as pd
pd.set_option('mode.chained_assignment', 'raise')

https://pandas.pydata.org/pandas-docs/stable/options.html#available-options

本文地址:https://www.itbaoku.cn/post/1728014.html