熊猫:SettingWithCopyWarning 触发位置

Posted

技术标签:

【中文标题】熊猫:SettingWithCopyWarning 触发位置【英文标题】:Pandas: SettingWithCopyWarning trigger location 【发布时间】:2015-02-23 21:34:26 【问题描述】:

使用SettingWithCopyWarning,有时它会将您指向模块中触发警告的确切代码行(例如here),有时则不会(例如here)。

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

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

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

【问题讨论】:

【参考方案1】:

通过将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

【讨论】:

以上是关于熊猫:SettingWithCopyWarning 触发位置的主要内容,如果未能解决你的问题,请参考以下文章

熊猫:SettingWithCopyWarning 触发位置

为啥我从熊猫那里得到 SettingWithCopyWarning

熊猫 SettingWithCopyWarning 的操作

尝试 .loc 后的熊猫 SettingWithCopyWarning

Python:SettingWithCopyWarning:试图在 DataFrame 中的切片副本上设置值

熊猫:链式作业[重复]