如何将数据帧输出从函数保存到工作区?

2024-09-30 12:29:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从csv导入文件的简单函数,我想将生成的数据帧存储到Python WorskSpace。实际上,创建的DF应该用作代码的其他函数的输入

我试图将数据帧声明为全局,但它仍然不“可见”

def tabpol(annee):

    # Import de la table polices
    import pandas as pd
    global table_polices
    
    pd.options.mode.chained_assignment = None
    libtab="C:/Users/a61787/Documents/NBV/NBV_2020/Modele/Table_"+str(annee)+"/"
        
    table_polices=pd.read_csv(libtab+'pol.csv')
    return table_polices

如果您能提供任何帮助,我们将不胜感激 谢谢

=>;你说得对,我需要删除return参数。 这样,我就可以直接使用该函数了

但实际上,该函数存储在名为“NBV”的模块中,当我从该模块调用该函数时,数据帧不可见

from NBV import tabpol
tabpol(2019)
print(table_polices)

NameError:未定义名称“表策略”


Tags: 模块文件csv数据函数importreturntable
1条回答
网友
1楼 · 发布于 2024-09-30 12:29:33

因此,在Python中,全局变量只在定义的模块中可见,而不是在Python应用程序的所有模块中可见

更准确地说,函数tabpol()是在名为NBV的模块中定义的,该模块还创建了一个全局变量table_polices。后者将在整个模块中可见(甚至在函数tabpol())之外,但在此模块之外不可见。这就是您收到NameError: name 'table_polices' is not defined的原因


有多种解决方法,但建议一种是有风险的,因为这在很大程度上取决于应用程序的设计。不过,举个例子,这里有一种替代方法可以解决这个问题:

# NBV.py
import pandas as pd


table_polices_2019 = tabpol(2019)


def tabpol(annee):
    pd.options.mode.chained_assignment = None
    libtab="C:/Users/a61787/Documents/NBV/NBV_2020/Modele/Table_"+str(annee)+"/"
    df = pd.read_csv(libtab+'pol.csv')
    
    return df

您可以使用NBV.table_polices_2019引用table_polices_2019

但是,这对我来说也不太正确。我也不确定全局变量是否会改进当前的设计,但我不这么认为。我知道您不想一次又一次地从固定的csv文件创建熊猫数据帧,但将熊猫数据帧转换为全局变量听起来不是一个好的解决方案对我来说(除非我遗漏了什么)

相关问题 更多 >

    热门问题