为什么在Python中无法从apply函数内部访问其他变量?
为什么以下代码不会影响为什么在Python中无法从apply函数内部访问其他变量?,python,pandas,Python,Pandas,为什么以下代码不会影响输出数据帧?(这个例子本身并不有趣——它是一种“复制”数据帧的复杂方式。) 是否有一种方法可以获得这样的功能,即使用apply函数,从而影响其他变量?会发生什么 DataFrame.append()返回一个新的数据帧。它不会修改输出,而是每次创建一个新的输出 将other行追加到此帧的末尾,返回新的 对象不在此框架中的列将作为新列添加 在这里: 您创建了一个新的数据帧,但立即将其丢弃 您有访问权限,但不应该以这种方式使用它 虽然这样做有效,但我强烈建议不要使用global:
输出
数据帧?(这个例子本身并不有趣——它是一种“复制”数据帧的复杂方式。)
是否有一种方法可以获得这样的功能,即使用apply
函数,从而影响其他变量?会发生什么
DataFrame.append()
返回一个新的数据帧。它不会修改输出,而是每次创建一个新的输出
将other
行追加到此帧的末尾,返回新的
对象不在此框架中的列将作为新列添加
在这里:
您创建了一个新的数据帧,但立即将其丢弃
您有访问权限,但不应该以这种方式使用它
虽然这样做有效,但我强烈建议不要使用global
:
df = DataFrame([1, 2, 3])
df2 = DataFrame()
def get_row(row):
global df2
df2 = df2.append(row)
df.apply(get_row)
print(df2)
输出:
0 1 2
0 1 2 3
把它当作发生了什么的示范。不要在代码中使用它。会发生什么
DataFrame.append()
返回一个新的数据帧。它不会修改输出,而是每次创建一个新的输出
将other
行追加到此帧的末尾,返回新的
对象不在此框架中的列将作为新列添加
在这里:
您创建了一个新的数据帧,但立即将其丢弃
您有访问权限,但不应该以这种方式使用它
虽然这样做有效,但我强烈建议不要使用global
:
df = DataFrame([1, 2, 3])
df2 = DataFrame()
def get_row(row):
global df2
df2 = df2.append(row)
df.apply(get_row)
print(df2)
输出:
0 1 2
0 1 2 3
把它当作发生了什么的示范。不要在代码中使用它。非常感谢。为了完整性起见,为什么您会说这样使用
global
是个坏主意?当您使用global
时,您很容易在看似不相关的代码片段之间创建隐式依赖关系。这会导致很难理解的程序。一个改变“外部世界”的函数可能会产生很多难以发现的问题。从技术上讲,我认为在通过调用函数的情况下,变量是“外部世界”。apply
是因为函数是从pandas库内部调用的,而不是从脚本本身调用的。因此,如果不是global
,就看不到该变量。非常感谢。为了完整性起见,为什么您会说这样使用global
是个坏主意?当您使用global
时,您很容易在看似不相关的代码片段之间创建隐式依赖关系。这会导致很难理解的程序。一个改变“外部世界”的函数可能会产生很多难以发现的问题。从技术上讲,我认为在通过调用函数的情况下,变量是“外部世界”。apply
是因为函数是从pandas库内部调用的,而不是从脚本本身调用的。因此,如果不是global
,就看不到该变量。
0 1 2
0 1 2 3