我试图保留熊猫数据框的副本,以便我可以在保存原始数据时对其进行修改。但是当我修改副本时,原始数据框也会发生变化。例:为什么熊猫数据框可以彼此改变?
df1=pd.DataFrame({'col1':['a','b','c','d'],'col2':[1,2,3,4]})
df1
col1 col2
a 1
b 2
c 3
d 4
df2=df1
df2['col2']=df2['col2']+1
df1
col1 col2
a 2
b 3
c 4
d 5
我设置df2
等于df1
,那么当我修改df2
,df1
也发生变化。为什么会这样,并且有什么方法可以保存熊猫数据框的“备份”而不用修改?
这是因为你只是让'df2'的代名词'DF1 '。他们指的是同一个对象。为了改变这种情况,我相信你可以做'df2 = df1.copy()'。 – zondo
这是一个Python问题,与大熊猫无关。当你做你的任务时,你会得到一个指向同一个对象的指针。你可以通过输入你的IDE'id(df2)'和'id(df1)'来确认,注意这些值是相同的('id'返回变量引用的对象的内存位置)。你可以用列表来做同样的事情。 'list_1 = [1,2]''list_2 = list_1'' list_2 [0] = 10'' >>> list_1' returns [10,2] – Alexander
http://nedbatchelder.com/text/names。html可能会帮助你一些相关的理解 –