python - 从 Jupyter 运行时,外部函数返回 DataFrames 但不返回变量
问题描述
假设您在 Jupyter 笔记本中有一个名为 MainNotebook.ipynb 的数据框,并且您正在将此数据框传递给一个名为testmath
的 Python 文件中的外部 Python 函数testmath.py
:
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
我试图让函数同时返回 DataFramemydf
和变量Feb
,以便我可以将它们用于以后的分析。
但是,奇怪的是,当您从 运行testmath(mydf)
时MainNotebook.ipynb
,虽然返回 DataFrame 并添加了新列,但变量 '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)
: NameError: name 'Feb' is not defined
有没有办法检索函数内部生成的变量?特别是如果你有很多?(我更喜欢不涉及全局变量的方法,gulp)
我已经尝试过删除 pycache,重新启动内核并清除输出。我还更新了所有的 conda 包,但仍然没有运气。
解决方案
由于您的函数返回 a tuple
,您可以使用序列解包:
mydf, Feb = testmath(mydf)
右侧返回一个结果元组,这些结果被解包到变量mydf
和Feb
. 然后可以像访问任何其他变量一样访问这些变量。
等效地,与pd.DataFrame.pipe
:
mydf, Feb = mydf.pipe(testmath)
推荐阅读
- c - Linux 多播数据包在 4 分钟后干涸
- python - 在 PyQt 的第二个线程中打开子对话框的正确方法是什么?
- java - 如何为给定的 maven 或 gradle 项目生成已弃用的库列表?
- c# - 使用派生类时如何使用 Fluent Assertion Should().BeEquivalentTo() 检查等价性
- tensorflow - 在 tensorflow 中显示 CUDA 运行时版本
- java - 从 java 8 迁移到 11 - jaxws-rt
- python - 查找矩阵的乘积时出错
- php - 教义固定装置 ManyToOne - Faker 不加载
- amazon-web-services - 有人可以在本地(使用私有地址)连接/发现我的 AWS 服务/实例吗?
- python - 词干地理词