繁体   English   中英

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

[英]External function returns DataFrames but not variables when running from Jupyter

假设您在Jupyter笔记本中有一个名为MainNotebook.ipynb的数据框,并且正在将该数据框传递给名为testmath的python文件中名为testmath.py的外部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

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

但是,奇怪的是,当您从MainNotebook.ipynb运行testmath(mydf)时,虽然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)的命令print(Feb)返回错误:NameError:未定义名称'Feb'

有什么方法可以检索函数内部生成的变量? 特别是如果您有很多呢? (我更喜欢不涉及全局变量的方法,gulp)

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

由于函数返回一个tuple ,因此可以使用序列解压缩

mydf, Feb = testmath(mydf)

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

等价于pd.DataFrame.pipe

mydf, Feb = mydf.pipe(testmath)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM