Ошибка функции при вызове другой функции - PullRequest
0 голосов
/ 30 сентября 2019

Я получаю следующую ошибку при вызове функции из другой функции:

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

модель_функции ниже:

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 Ответ

1 голос
/ 30 сентября 2019

Проблема в том, что вы не вызываете функцию, которую вы определили как model_results, а вместо этого "вызываете" данные model_results для данных model_results. Вот почему вы получаете ошибку, что объект не вызывается.

Измените либо имя функции, либо имя данных model_results на что-то другое, это позволит Python различать их и делать то, что вы хотите, чтобы он делал. Это вызов функции model_results для model_results data .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...