Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧存在于方法之外。为什么?_Python_Pandas_Dataframe - Fatal编程技术网

Python 数据帧存在于方法之外。为什么?

Python 数据帧存在于方法之外。为什么?,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有一个简单的数据帧df 还有一个简单的方法,它对dataframe def alterDF(df): df1['new column'] = df['some column'] + x return df1 在上面的方法中,我用x修改了整个列,并将其保存到方法中的新变量名中! 然而,当我检查我的原始数据帧(即df)时,我看到它也添加了新的列 我知道我创建的原始dataframe存在于方法之外。但是我希望方法内部发生的任何更改都应该保留在那里,除非我通过方法中的retur

假设我有一个简单的数据帧
df
还有一个简单的方法,它对
dataframe

def alterDF(df): 
    df1['new column'] = df['some column'] + x
    return df1
在上面的方法中,我用x修改了整个
,并将其保存到方法中的新变量名中! 然而,当我检查我的原始数据帧(即df)时,我看到它也添加了新的列

我知道我创建的原始
dataframe
存在于方法之外。但是我希望方法内部发生的任何更改都应该保留在那里,除非我通过方法中的
return
块保存更改


然而,我知道我错了……这些变化也适用于我的方法,也发生在我的方法之外。这怎么可能?为什么会这样

可能是因为你有这样一句台词

df1 = df # by doing this you copy the reference also
如果要复制数据帧,请使用

df1 = df.copy() 

相反,在python中,(几乎)一切都是通过引用传递的,除非您明确更改引用(通过执行
name=new\u reference
)。但我想复制我的原始数据帧。希望使用旧数据帧作为输入的一部分来创建新数据帧。我只是想知道是否有一种不同的方法可以做到这一点,而不必更新原始数据帧。@J.a.Cado这正是df1=df.copy()所做的。请原谅我的无知。