更新Pandas数据框中的值似乎更新了所有数据帧

时间:2017-02-04 18:54:26

标签: python pandas dataframe

我已经构建了两个像这样的Pandas数据帧:

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,但我不明白为什么。

2 个答案:

答案 0 :(得分:1)

因为df2只是df1的引用。它们指向内存中的同一个对象,只是名称不同。如果你执行df2=df1.copy()它应该为df2创建一个新的内存并且只更新它..plus你在导入pandas中输入错误了:)

您可以使用id(df1)检查对象所在的内存地址,并查看与df2相同的内存地址,并在使用.copy()方法时更改

欢迎来到SO!

答案 1 :(得分:0)

而不是df2 = df1,而是df2 = df1.copy()

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