无法想出更好的标题,所以我们就到这里了。我正在运行以下代码:
dow_23457 = df
dow_23457 = dow_23457.set_index('date', inplace = True)
dow_23457 = dof_2345i.shift(24)
dow_23457 = dow_23457.reset_index()
据我了解,我首先制作“df”的副本,然后更改副本。让我感到困惑的是,当我运行第二行时,“日期”列甚至在“df”数据框中也成为索引。不过,以下两行的更改仅适用于复制的 (dow_23457) 数据帧。怎么会发生这种事?
最佳答案
I first make a copy of 'df' and then I change the copy
不!当您执行 dow_23457 = df
时,您正在使 dow_23457
查看相同的底层对象 df
一直在查看在。直接赋值不会复制语言中的数据。
你需要明确:
dow_23457 = df.copy()
这使得 dow_23457
现在看到一个完全不同的、新创建的数据框对象,它独立于 df
所看到的内容。 (好吧,除了你在数据框的单元格中有一些列表、字典等,它们会阻碍复制过程......但你首先不应该将它们放在数据框的单元格中!)
有关“命名”主题的更多信息,您可能需要查看 here (它还有视频形式和纯文本形式)。
关于python - 更改一个数据框也会更改其副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74065403/