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