Это расширение этой очереди:
Для объединения сложных таблиц панд
У меня есть три разных взаимодействия в statsmodels
GLM. Мне нужна финальная таблица, которая объединяет коэффициенты с другими результатами одномерного анализа.
Ниже приведен пример того, как выглядят таблицы с семейным положением и возрастным взаимодействием в модели. final_table
- это таблица, в которой содержатся одномерные результаты. Я хочу объединить значения коэффициентов (среди других статистических данных, p_values, standard_error и т. Д.) Из результатов модели в эту финальную таблицу (это model_results в приведенном ниже коде).
df = {'variable': ['CLded_model','CLded_model','CLded_model','CLded_model','CLded_model','CLded_model','CLded_model'
,'married_age','married_age','married_age', 'class_cc', 'class_cc', 'class_cc', 'class_cc', 'class_v_age'
,'class_v_age','class_v_age', 'class_v_age'],
'level': [0,100,200,250,500,750,1000, 'M_60', 'M_61', 'S_62', 'Harley_100', 'Harley_1200', 'Sport_1500', 'other_100'
,'Street_10', 'other_20', 'Harley_15', 'Sport_10'],
'value': [460955.7793,955735.0532,586308.4028,12216916.67,48401773.87,1477842.472,14587994.92,10493740.36,36388470.44
,31805316.37, 123.4, 4546.50, 439854.23, 2134.4, 2304.5, 2032.30, 159.80, 22]}
final_table1 = pd.DataFrame(df)
final_table1
Присоединяйтесь к вышесказанному с помощью различных способов, которыми statsmodels сообщает результаты:
df2 = {'variable': ['intercept','driver_age_model:C(marital_status_model)[M]', 'driver_age_model:C(marital_status_model)[S]'
, 'CLded_model','C(class_model)[Harley]:v_age_model', 'C(class_model)[Sport]:v_age_model'
,'C(class_model)[Street]:v_age_model', 'C(class_model)[other]:v_age_model'
, 'C(class_model)[Harley]:cc_model', 'C(class_model)[Sport]:cc_model' , 'C(class_model)[Street]:cc_model'
, 'C(class_model)[other]:cc_model']
,'coefficient': [-2.36E-14,-1.004648e-02,-1.071730e-02, 0.00174356,-0.07222433,-0.146594998,-0.168168491,-0.084420399
,-0.000181233,0.000872798,0.001229771,0.001402564]}
model_results = pd.DataFrame(df2)
model_results
С желаемым конечным результатом:
df3 = {'variable': ['intercept', 'CLded_model','CLded_model','CLded_model','CLded_model','CLded_model','CLded_model','CLded_model'
,'married_age','married_age','married_age', 'class_cc', 'class_cc', 'class_cc', 'class_cc', 'class_v_age'
,'class_v_age','class_v_age', 'class_v_age'],
'level': [None,0,100,200,250,500,750,1000, 'M_60', 'M_61', 'S_62', 'Harley_100', 'Harley_1200', 'Sport_1500', 'other_100'
,'Street_10', 'other_20', 'Harley_15', 'Sport_10'],
'value': [None, 460955.7793,955735.0532,586308.4028,12216916.67,48401773.87,1477842.472,14587994.92,10493740.36,36388470.44
,31805316.37, 123.4, 4546.50, 439854.23, 2134.4, 2304.5, 2032.30, 159.80, 22],
'coefficient': [-2.36E-14, 0.00174356, 0.00174356, 0.00174356, 0.00174356, 0.00174356 ,0.00174356 , 0.00174356
,-1.004648e-02, -1.004648e-02,-1.071730e-02,-1.812330e-04,-1.812330e-04,8.727980e-04,1.402564e-03
,-1.681685e-01, -8.442040e-02, -1.812330e-04, -1.465950e-01]}
results = pd.DataFrame(df3)
results
Когда я реализовал первый ответ, он произвел этот ответ.