Python 2.7 为什么重新分配pandas数据帧不会触发带有CopyWarning的设置?
此代码工作正常:Python 2.7 为什么重新分配pandas数据帧不会触发带有CopyWarning的设置?,python-2.7,pandas,Python 2.7,Pandas,此代码工作正常: x = pd.DataFrame([[1, 0], [0, 1]]) x = x[x[0] > 0] x.loc[0, 0] = 2 但此代码提供了带有CopyWarning的设置: x = pd.DataFrame([[1, 0], [0, 1]]) y = x[x[0] > 0] y.loc[0, 0] = 2 这很令人困惑。由于python不支持赋值运算符重写,Panda如何知道x和y之间的区别?在第一个代码段中覆盖x,因此没有副本或引用,对于指定给y的第
x = pd.DataFrame([[1, 0], [0, 1]])
x = x[x[0] > 0]
x.loc[0, 0] = 2
但此代码提供了带有CopyWarning的设置
:
x = pd.DataFrame([[1, 0], [0, 1]])
y = x[x[0] > 0]
y.loc[0, 0] = 2
这很令人困惑。由于python不支持赋值运算符重写,Panda如何知道
x
和y
之间的区别?在第一个代码段中覆盖x
,因此没有副本或引用,对于指定给y
的第二个引用,现在会发出警告,因为您现在有原始dfx
和引用y
如果你想要一份不同的拷贝,你可以
y = x[x[0]>0].copy()
这将不会发出警告,因为这将执行一个深入的谢谢!只是出于好奇,参考计数是否有助于熊猫区分这两种情况?