Pandas: настройка местоположения триггераWithCopyWarning

С 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

Ответ 1

Я бы сказал, что это будет зависеть. На самом деле это зависит от того, какую программу вы используете для запуска вашей программы. Например, если вы запускали программу с помощью Python IDE, это то, что вы получаете:

Traceback (most recent call last):
  File "C:/Python27/idontcare.py", line 1, in <module>
    print qwerfghnjm
NameError: name 'qwerfghnjm' is not defined

Просто ошибка, которая сообщает только, в какой строке включена ошибка и что это такое. Но если вы используете что-то вроде PyCharm (из JetBrains), это сообщение об ошибке вы получите:

Traceback (most recent call last):
  File "E:/PyCharm_Tony/Caculator.py", line 2103, in <module>
    myWindow = MyWindowClass(None)
  File "*E:/PyCharm_Tony/Caculator.py*", line 42, in __init__
    self.btnRESET.clicked.connect(self.btnRESET_clicked)
AttributeError: 'MyWindowClass' object has no attribute 'btnRESET_clicked'

Сообщение об ошибке, похожее на первое, но это обеспечивает прямую ссылку на строки кода, которые вызвали ошибку (ссылки E:/PyCharm_Tony/Caculator.py). Итак, в заключение, это действительно зависит от того, что вы используете для запуска своих программ. Некоторые делают, а некоторые нет. Этот ответ действительно относится ко всем типам ошибок, а не только к тем, которые вы указали. Надеюсь, это поможет вам!