Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/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/Pandas新手:当重新分配给新变量时,对dataframe进行了不必要的更改_Python_Pandas_Dataframe - Fatal编程技术网

Python/Pandas新手:当重新分配给新变量时,对dataframe进行了不必要的更改

Python/Pandas新手:当重新分配给新变量时,对dataframe进行了不必要的更改,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个名为df的数据框架,我在其中应用了一些简单的转换(删除列、替换值等)。我正在执行的工作要求我有2份数据帧副本;一个是有变化的,另一个是原始状态的。下面是我所经历的一个例子: 将熊猫作为pd导入 df=pd.read\u csv(x) df=df2 #创建了一个名为df2的数据框,该数据框应反映此时df中的所有更改(即,我希望文件保持其原始状态) #然后对df进行更改 打印(df) #一些输出 打印(df2) #对df所做的所有更改现在都显示在df2中,这是我不想要的 很明显,我不完全理

我有一个名为df的数据框架,我在其中应用了一些简单的转换(删除列、替换值等)。我正在执行的工作要求我有2份数据帧副本;一个是有变化的,另一个是原始状态的。下面是我所经历的一个例子:

将熊猫作为pd导入
df=pd.read\u csv(x)
df=df2
#创建了一个名为df2的数据框,该数据框应反映此时df中的所有更改(即,我希望文件保持其原始状态)
#然后对df进行更改
打印(df)
#一些输出
打印(df2)
#对df所做的所有更改现在都显示在df2中,这是我不想要的
很明显,我不完全理解数据帧在Python中是如何操作的,我来自R的背景。 这是正常的行为,还是不应该发生的事情?我如何在数据帧转换的早期阶段制作数据帧的副本,而不将这些更改传递到包含df内容的另一个变量?当我输入这个文件时,我意识到我可能只需要用不同的名称再次导入该文件。我希望这是清楚的,希望了解这里发生了什么。谢谢大家的帮助。

您应该尝试使用函数。仅将
df
分配给
df2
时,如果不使用复制功能,
df
df2
将指向同一对象

import pandas as pd

df=pd.read_csv(x)
df2=df.copy()

标准的“分配给新变量”方法将返回数据帧的浅拷贝。要获取深度副本,请使用Try
df2=df.copy()
Try
df2=df.copy(deep=True)
True
是默认值,但谁知道那里发生了什么。明确地设置它必须给你一个深刻的复制我说的任务。您声明分配给新变量将创建一个浅副本。这是不正确的。赋值从不复制,它只创建对对象的新引用。而且
.copy
应该可以。哦,我明白了。今天学到了另一件事,谢谢!