调用另一个函数时函数出错

时间:2019-09-30 12:14:07

标签: python function

从另一个函数调用一个函数时出现以下错误:

TypeError: 'GLMResultsWrapper' object is not callable

我在下面的coeffs = model_results(model_results)行看到错误。

这是另一个在table_to_graph函数外部运行无错误的函数。 model_results函数从statsmodel模型获取摘要输出,并将其放入数据框。

table_to_graph函数将该数据框连接到另一个表,该表是输入中的df。 table_to_graph函数如下。

最终功能如下:

# Add into table generation table
def table_to_graph(model_results, df):
    '''
    #function that combines rating tables and model summary

    '''
    coeffs = model_results(model_results)

    try:
        df['key'] = df['variable']+"_"+df['level']
        df = pd.merge(df, coeffs, left_on = 'key', right_on = 'index', how = 'left')
        df['factor'] = np.exp(df[factor])
        df['factor'].fillna(1, inplace = True)
        df['error_up'] = np.exp(df[error_up])
        df['error_down'] = np.exp(df[error_down])
        #title2 = title1

        df = df[['model', 'variable', 'level', 'total_incurred', 'total_count', 'cmeu', 'factor', 'error_up', 'error_down'
                 , 'pricing_model_1_p_values']]

        return df

        #df1 = df1.append(df)

    except:

        #df['level'] = df['level'].astype('str')
        df['key'] = df['variable']+"_"+df['level'].astype('str')
        df['level'] = df['level'].astype('int')
        df = pd.merge(df, coeffs, left_on = 'key', right_on = 'index', how = 'left')
        df['factor'] = np.exp(df[factor])
        df['factor'].fillna(1, inplace = True)
        df['error_up'] = np.exp(df[error_up])
        df['error_down'] = np.exp(df[error_down])

        df = df[['model', 'variable', 'level', 'total_incurred', 'total_count', 'cmeu', 'factor', 'error_up'
             , 'error_down', 'pricing_model_1_p_values']]

        #df1 = df1.append(df)


        return df

model_results函数如下:

def model_results(model_results):
    '''
    function that puts model parameters into a data frame

    '''

    df = pd.DataFrame(model_results.params, columns = ['factor'])
    df['error_down'] = model_results.conf_int()[0]
    df['error_up'] = model_results.conf_int()[1]
    df['standard_error'] = model_results.bse
    df['pvalues'] = round(model_results.pvalues, 3)
    df.reset_index(inplace = True)
    return df

1 个答案:

答案 0 :(得分:1)

问题在于您不是在调用您定义为model_results的函数,而是在model_results数据上“调用” model_results数据。这就是为什么您会收到该对象不可调用的错误的原因。

将函数名称或model_results数据的名称更改为其他名称,这将允许python在两者之间进行区分并执行您想要的操作。在model_results 数据上称为函数 model_results。