在Python中分配两个数据帧时会发生什么

在Python中分配两个数据帧时会发生什么,python,pandas,dataframe,Python,Pandas,Dataframe,我注意到我的代码中有一些有趣的行为 如果我做的是df1=df2,然后是df2=df3。如果我往里看,为什么df1也等于df3?与DataFrame.copy有关(deep=True) 在简单变量中会观察到相同的行为,还是只在DFs这样的复杂对象中观察到相同的行为 谢谢 为了复制值而不是内存位置,需要使用df1=df2.copy()。对于复杂对象来说,大多数情况下都是这样。在Python中,所有变量赋值都是这样工作的。请阅读Ned Batchelder的.@juanpa.arrivillaga不

我注意到我的代码中有一些有趣的行为


如果我做的是df1=df2,然后是df2=df3。如果我往里看,为什么df1也等于df3?与DataFrame.copy有关(deep=True)

在简单变量中会观察到相同的行为,还是只在DFs这样的复杂对象中观察到相同的行为


谢谢

为了复制值而不是内存位置,需要使用df1=df2.copy()。对于复杂对象来说,大多数情况下都是这样。

在Python中,所有变量赋值都是这样工作的。请阅读Ned Batchelder的.@juanpa.arrivillaga不,他们没有:
df2=1;df3=2;df1=df2;df2=df3
,然后
df1==3
,而
df2==4和df3==4
。例如,列表也是如此。请举例说明你的意思。@Evert哦,你说得对。我把问题看得太快了。“与DataFrame.copy(deep=True)有关吗?”:是的。变量名只是指向内存中的实际对象,为了保持“便宜”(除非要求,否则避免复制),数据帧内容(内存)不会自动复制。事实上,这种情况通常发生在复杂(大型)对象上。你能给出一个实际的例子@MishaAM吗?