假设你在一个名为 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)
右侧返回结果元组,这些结果解压缩为变量mydf
和Feb
。然后可以像访问任何其他变量一样访问这些变量。
等价地,pd.DataFrame.pipe
mydf, Feb = mydf.pipe(testmath)