Python 更新数据帧中的值似乎会更新所有数据帧

Python 更新数据帧中的值似乎会更新所有数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我构建了两个熊猫数据帧,如下所示: import panda as pd d = {'FIPS' : pd.Series(['01001', '01002']), 'count' : pd.Series([3, 4])} df1 = pd.DataFrame(d) df2 = df1 我想更改df2中的一个值。这就是我尝试过的: df2.loc[df2['FIPS'] == '01001','FIPS'] = '01003' 这行代码似乎同时更新了df1和df2,但我不明白为什么。而不是

我构建了两个熊猫数据帧,如下所示:

import panda as pd
d = {'FIPS' : pd.Series(['01001', '01002']), 'count' : pd.Series([3, 4])}
df1  = pd.DataFrame(d)
df2 = df1
我想更改df2中的一个值。这就是我尝试过的:

df2.loc[df2['FIPS'] == '01001','FIPS'] = '01003' 

这行代码似乎同时更新了df1和df2,但我不明白为什么。

而不是
df2=df1
,比如说
df2=df1.copy()


问题是python中的变量在分配复杂的数据结构时起着“指针”的作用。它们存储对其值的引用,而不是实际值。因此,在上面的代码中,df2成为df1的另一个名称或别名。因此出现了意外的变化。

因为
df2
只是
df1
的参考。它们指向内存中的同一对象,只是名称不同。如果您执行
df2=df1.copy()
操作,它应该为
df2
创建一个新内存,并且只对其进行更新..另外,您在导入中有一个输入错误:)

您可以使用
id(df1)
检查对象所在的内存地址,并查看其与
df2
相同的内容,如果使用
.copy()
方法,则会发生更改


欢迎来到SO

非常感谢!这回答了我的问题。我不知道将数据帧分配给变量名与分配整数有这么大的不同。太好了!:)你可以点击旁边的勾选按钮来接受我的答案。享受社交礼节,如果简在下面的回答回答了你的问题,那么就接受它作为答案。