我不明白这里的最佳做法是什么:
我想在我的函数中修改数据框data
。 data
是全球定义的。但是,如果我在函数中指定global
选项,我必然会收到错误,因为data =
定义了一个局部变量。
data = pd.DataFrame({'A' : [1, 2, 3, 4],
'B' : [1, 2, 3, 4]})
def test(data):
global data
data = data + 1
return data
test(data)
SyntaxError: name 'data' is local and global
这是否意味着在处理数据帧时我不能使用global
参数?
def test2(data):
data = data + 1
return data
也不起作用。这就是原始的data
未被修改。
我在这里缺少什么?
答案 0 :(得分:7)
如果您想在功能中使用全局data
,请不要将其作为参数传递:
import pandas as pd
data = pd.DataFrame({'A' : [1, 2, 3, 4],
'B' : [1,2,3,4]})
def test():
global data
data = data + 1
test()
另一种选择是保留参数并分配调用函数的结果:
import pandas as pd
data = pd.DataFrame({'A' : [1, 2, 3, 4],
'B' : [1,2,3,4]})
def test(data):
data = data + 1
return data
data = test(data)
您可以看到,对全局变量和局部变量使用相同的名称会让事情变得有些混乱。如果你想走这条路,使用不同的名字可以让你的大脑更容易:
import pandas as pd
g_data = pd.DataFrame({'A' : [1, 2, 3, 4],
'B' : [1,2,3,4]})
def test(data):
data = data + 1
return data
g_data = test(g_data)