Python 所有数据帧中的函数错误更改

Python 所有数据帧中的函数错误更改,python,pandas,dataframe,replace,Python,Pandas,Dataframe,Replace,我使用pandas replace函数替换一个值。请参阅下面的代码: import pandas as pd d = {'color' : pd.Series(['white', 'blue', 'orange']), 'second_color': pd.Series(['white', 'black', 'blue']), 'value' : pd.Series([1., 2., 3.])} df1 = pd.DataFrame(d) print(df1) df = df1

我使用pandas replace函数替换一个值。请参阅下面的代码:

import pandas as pd

d = {'color' : pd.Series(['white', 'blue', 'orange']),
   'second_color': pd.Series(['white', 'black', 'blue']),
   'value' : pd.Series([1., 2., 3.])}
df1 = pd.DataFrame(d)
print(df1)

df = df1
df['color'] = df['color'].replace('white','red')

print(df1)

print(df)
我打算更改
df
中的值,但为什么
df1
中的相同值也会更改

下面的代码可以

df=df.replace('white','red')

您需要使用
.copy()


因此,您对
df
所做的更改不会传播到
df1

,因为两者都引用相同的数据位置

当您执行
df=df1
时,它不会创建新的数据帧,它只是将
df
的引用设置为变量
df1
。使用
id()

>>> df = df1
>>> id(df)
41633008
>>> id(df1)
41633008
要制作新副本,可以使用方法

现在,您可以看到这两者都引用到不同的位置

关于浅拷贝和深拷贝,还有很多东西需要学习。请阅读文件了解更多信息

>>> df = df1
>>> id(df)
41633008
>>> id(df1)
41633008
>>> df = df1.copy()
>>> id(df)
31533376
>>> id(df1)
41633008