问题:
我正在使用一个函数,该函数接受一个(全局)变量作为输入,然后对该变量(局部)执行操作,然后返回相同的变量。我只希望变量在本地更改,但是我的功能也正在更改全局变量。
要复制的代码:
data = {'A' : [1,2,3],
'B' : [4,5,6],
'C' : [7,8,9]}
df = pd.DataFrame(data)
def func(df):
df['D'] = df['A'] * df['B'] / df['C']
return df
func(df) # running function, without assigning it to original variable
print(df)
返回:
运行代码表明原始数据帧已更改,并添加了列。
A B C D
0 1 4 7 12
1 2 5 8 15
2 3 6 9 18
预期行为:
我的意图是在不将列添加到全局变量的情况下运行该函数,而仅将其添加到函数内部。
A B C
0 1 4 7
1 2 5 8
2 3 6 9
设置:
答案 0 :(得分:1)
您可以制作本地副本:
def func(d):
df = d.copy()
df['D'] = df['A'] * df['B'] / df['C']
return df