尝试.loc后的pandas SettingWithCopyWarning

时间:2016-03-17 12:42:38

标签: python pandas

首先,我构建一个新的DataFrame框架。然后通过从帧中过滤一些数据来创建新的frame2。现在我想为frame2分配一些值:

import numpy as np
from pandas import DataFrame

frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'], columns=['Ohio', 'Texas', 'California'])
mask = frame['Texas'] > 1
print frame[mask]
frame2 = frame.loc[mask]
frame2.loc['c', 'Ohio'] = 'me'
print frame2

但是我收到了这个警告:

C:\Python27\lib\site-packages\pandas\core\indexing.py:461: 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
尽管我使用了推荐的.loc语法,但为什么我仍然得到这个警告?我应该做些什么来避免这种警告?

1 个答案:

答案 0 :(得分:4)

更改

frame2 = frame.loc[mask]

frame2 = frame.loc[mask].copy()

消除了这个警告。