外部函数在从 Jupyter 运行时返回数据帧,但不返回变量



假设你在一个名为 MainNotebook.ipynb 的 Jupyter 笔记本中有一帧,并且你要将这个数据帧传递给一个名为testmath.py的 python 文件中一个名为testmath的外部 python 函数:

import pandas as pd
from testmath import testmath
sales = [{'account': 'Jones LLC', 'Jan': 150, 'Feb': 200, 'Mar': 140},
{'account': 'Alpha Co',  'Jan': 200, 'Feb': 210, 'Mar': 215},
{'account': 'Blue Inc',  'Jan': 50,  'Feb': 90,  'Mar': 95 }]
mydf = pd.DataFrame(sales)
testmath(mydf)

以下是 testmath.py 的代码:

import pandas as pd
def testmath(inputdf):
Feb = inputdf['Feb']
inputdf['FebPesos'] = Feb * 12
return inputdf, Feb

我正在尝试让函数同时返回数据帧mydf和变量Feb,以便我可以将它们用于以后的分析。

但是,奇怪的是,当您从MainNotebook.ipynb运行testmath(mydf)时,当返回数据帧并添加新列时,变量"Feb"无法访问。

我的意思是,如果您从MainNotebook运行以下内容:

from importdebug import testmath
import pandas as pd
sales = [{'account': 'Jones LLC', 'Jan': 150, 'Feb': 200, 'Mar': 140},
{'account': 'Alpha Co',  'Jan': 200, 'Feb': 210, 'Mar': 215},
{'account': 'Blue Inc',  'Jan': 50,  'Feb': 90,  'Mar': 95 }]
mydf = pd.DataFrame(sales)
testmath(mydf)
print(Feb)

print(Feb)的命令返回错误: 名称错误: 未定义名称"Feb">

有没有办法检索函数内生成的变量?特别是如果你有很多?(我更喜欢不涉及全局变量的方法,gulp(

我已经尝试删除pycache,重新启动内核并清除输出。我还更新了所有的康达包,但仍然没有运气。

由于您的函数返回一个tuple,您可以使用序列解包:

mydf, Feb = testmath(mydf)

右侧返回结果元组,这些结果解压缩为变量mydfFeb。然后可以像访问任何其他变量一样访问这些变量。

等价地,pd.DataFrame.pipe

mydf, Feb = mydf.pipe(testmath)

最新更新