Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何基于Python中的输入在函数中动态创建全局变量_Python 3.x_Function_Globals - Fatal编程技术网

Python 3.x 如何基于Python中的输入在函数中动态创建全局变量

Python 3.x 如何基于Python中的输入在函数中动态创建全局变量,python-3.x,function,globals,Python 3.x,Function,Globals,我试图创建一个函数,它返回一个动态命名的列列表。通常我可以手动命名列表,但我现在有100多个csv文件要处理 我的目标是: 函数创建一个列表,并根据数据帧名称对其命名 创建的列表可在函数外部调用 我已经做了我的研究,从一个早期的帖子中,我非常接近于帮助我 这是我改编的 def test1(dataframe): # Using globals() to get dataframe name df_name = [x for x in globals() if globals()[

我试图创建一个函数,它返回一个动态命名的列列表。通常我可以手动命名列表,但我现在有100多个csv文件要处理

我的目标是:

  • 函数创建一个列表,并根据数据帧名称对其命名
  • 创建的列表可在函数外部调用
  • 我已经做了我的研究,从一个早期的帖子中,我非常接近于帮助我

    这是我改编的

    def test1(dataframe):
        # Using globals() to get dataframe name
        df_name = [x for x in globals() if globals()[x] is dataframe][0]
        
        # Creating local dictionary to use exec function
        local_dict = {}
        
        # Trying to generate a name for the list, based on input dataframe name 
        name = 'col_list_' + df_name
        exec(name + "=[]", globals(), local_dict)
    
        # So I can call this list outside the function
        name = local_dict[name]
        
        for feature in dataframe.columns:
            # Append feature/column if >90% of values are missing
            if dataframe[feature].isnull().mean() >= 0.9:
                name.append(feature)
                
        return name
    
    为了确保列表名称根据提供给函数的数据帧更改,我使用以下方法命名列表:
    name='col\u list\uu'+df\u name

    当我尝试在函数外部访问此列表时,出现了问题:
    name=local\u dict[name]

    我无法为本地字典分配动态列表名,因此我必须始终在函数外部调用
    name
    ,以返回列表。我希望列表根据数据帧输入命名(例如col_list_df1、col_list_df2、col_list_df99)

    这很有帮助,但似乎是针对变量的。
    global“col\u list”+df\u name
    返回语法错误


    任何帮助都将不胜感激

    为什么不利用pandas将每个csv文件读取到它自己的数据帧中呢。这将基于csv文件定义列标题。然后,您可以保留一个数据帧列表,并根据需要对其进行处理。实际上,我已经将每个csv文件读入了自己的数据帧中。从这里开始,我尝试创建一个函数,该函数接收这些数据帧,并返回列名称列表。此外,我希望函数可以根据数据帧名称命名列表。为什么不利用pandas将每个csv文件读取到它自己的数据帧中呢。这将基于csv文件定义列标题。然后,您可以保留一个数据帧列表,并根据需要对其进行处理。实际上,我已经将每个csv文件读入了自己的数据帧中。从这里开始,我尝试创建一个函数,该函数接收这些数据帧,并返回列名称列表。此外,我希望函数可以根据数据帧名称命名列表。