【问题标题】:What is happening when I assign two Dataframes in Python当我在 Python 中分配两个数据框时会发生什么
【发布时间】:2017-03-03 04:09:04
【问题描述】:

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

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

会在简单变量中观察到相同的行为,还是仅在 DF 等复杂对象中观察到相同的行为?

谢谢。

【问题讨论】:

  • 所有变量赋值在 Python 中都是这样工作的。请阅读 Ned Batchelder 的 Facts and myths about Python names and values
  • @juanpa.arrivillaga 不,他们没有:df2=1; df3=2; df1=df2; df2=df3,然后是df1 == 3,而df2 == 4 and df3 == 4。同样适用于例如列表也是如此。举例说明您所指的作业。
  • @Evert 哦,你是对的。我读的太快了。
  • “与 DataFrame.copy(deep=True) 有关吗?”:是的。变量名称只是指向内存中的实际对象,并且为了保持“便宜”(除非被询问,否则避免复制),数据帧内容(内存)不会自动复制。事实上,这通常发生在复杂(大)物体上。
  • 你能发布一个实际的例子吗,@MishaAM ?

标签: python pandas dataframe


【解决方案1】:

为了复制值而不是内存位置,您需要使用 df1 = df2.copy()。这主要适用于复杂对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-21
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多