【问题标题】:Pull a variable out of multiple functions从多个函数中拉出一个变量
【发布时间】:2019-09-30 15:39:29
【问题描述】:

我有 4 个函数用于操作数据框以创建它的新版本。我需要从每个函数中取出调整后的数据框的最后一个版本,以便在其他地方使用它们。请记住,df_1 不是返回的数据帧,而是一个中间变量。所以运行函数不会返回我需要的变量。

例如,我有以下函数,需要合并来自 function_1 的 df1、来自 function_2 的 df1 和来自 function_3 的 df1。但是,当我运行一个函数并设置它时,它说 df1 没有定义。我可以将其设置为全局,但还有其他方法吗?谢谢。

def funciton_1():
    df1=df1.apply()
    df1.dropna... 
    df_name=pd.merge(df1, df_name, how='outer')
    #other manipulations df_name
return df_name
def funciton_2():
    df1=df1[[column names]]
    df1.replace('([regex]])','',regex=True,inplace=True)
return df_name
def funciton_3():
    df1=df1[[column names]]
    df1.replace('([regex]])','',regex=True,inplace=True)
    df1=df1.apply()
    df1.dropna...`enter code here`return df_name

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    最好的是,如果您使用本地范围的方法并且不使用任何全局范围。将要修改的数据框作为参数传递并返回修改后的版本。这样,您的代码变得更加模块化,易于测试和遵循。这样你就可以写了:

    df1 = function_1(df)
    df2 = function_2(df1)
    df3 = function_3(df2)
    
    pd.concat([df1, df2, df3])
    

    【讨论】:

    • 抱歉,早该指定。我不需要函数的返回,因为还有其他数据框被操作和合并。函数的返回不会满足它。
    • 无论如何,使用全局状态并在函数中修改它不是一个好习惯。出于可读性和可维护性的原因,如果您对代码进行结构化而不需要这样做会更好。
    猜你喜欢
    • 2016-03-04
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 2022-06-15
    相关资源
    最近更新 更多