首先,我构建一个新的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语法,但为什么我仍然得到这个警告?我应该做些什么来避免这种警告?
答案 0 :(得分:4)
更改
frame2 = frame.loc[mask]
到
frame2 = frame.loc[mask].copy()
消除了这个警告。