让我假设我有一个简单的数据帧df
还有一个简单的方法可以对dataframe
def alterDF(df):
df1['new column'] = df['some column'] + x
return df1
在上面的方法中,我用x修改整个column
并将其保存到方法内的新变量名...
但是,当我检查我的原始数据帧(即df)时,我发现它还添加了新列......
我知道我创建的原始dataframe
存在于方法之外。但是我希望方法中发生的任何更改都应该保留在那里,除非我通过我的方法中的return
块保存更改。
但是,我知道我错了...我的方法中也应用了更改,也发生在我的方法之外。怎么会这样?为什么会这样?
答案 0 :(得分:2)
可能是因为你有这样的一行
df1 = df # by doing this you copy the reference also
如果要复制数据框,请使用
df1 = df.copy()
代替