一般来说
SettingWithCopyWarning
可以
在复印件上操作,而不是他们认为的原件。在那里
是
误报(如果你知道你在做什么
). 一种可能是关闭(默认情况下
警告
)正如“加勒特”所建议的那样。
还有一个选择:
In [1]: df = DataFrame(np.random.randn(5, 2), columns=list('AB'))
In [2]: dfa = df.ix[:, [1, 0]]
In [3]: dfa.is_copy
Out[3]: True
In [4]: dfa['A'] /= 2
/usr/local/bin/ipython:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_index,col_indexer] = value instead
#!/usr/local/bin/python
is_copy
标记为
False
为了那个目标
:
In [5]: dfa.is_copy = False
In [6]: dfa['A'] /= 2
如果显式复制,则不会出现进一步警告:
In [7]: dfa = df.ix[:, [1, 0]].copy()
In [8]: dfa['A'] /= 2
不
如果警告是通过
reindex
quote_df = quote_df.reindex(columns=['STK', ...])
或者,
quote_df = quote_df.reindex(['STK', ...], axis=1) # v.0.21