Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 为什么重新分配pandas数据帧不会触发带有CopyWarning的设置?_Python 2.7_Pandas - Fatal编程技术网

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
的第二个引用,现在会发出警告,因为您现在有原始df
x
和引用
y

如果你想要一份不同的拷贝,你可以

y = x[x[0]>0].copy()

这将不会发出警告,因为这将执行一个深入的

谢谢!只是出于好奇,参考计数是否有助于熊猫区分这两种情况?