我有一个从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:未定义名称“表策略”
因此,在Python中,全局变量只在定义的模块中可见,而不是在Python应用程序的所有模块中可见
更准确地说,函数
tabpol()
是在名为NBV
的模块中定义的,该模块还创建了一个全局变量table_polices
。后者将在整个模块中可见(甚至在函数tabpol())
之外,但在此模块之外不可见。这就是您收到NameError: name 'table_polices' is not defined
的原因有多种解决方法,但建议一种是有风险的,因为这在很大程度上取决于应用程序的设计。不过,举个例子,这里有一种替代方法可以解决这个问题:
您可以使用
NBV.table_polices_2019
引用table_polices_2019
但是,这对我来说也不太正确。我也不确定全局变量是否会改进当前的设计,但我不这么认为。我知道您不想一次又一次地从固定的csv文件创建熊猫数据帧,但将熊猫数据帧转换为全局变量听起来不是一个好的解决方案对我来说(除非我遗漏了什么)
相关问题 更多 >
编程相关推荐