Я пытаюсь соединить фрейм данных результатов из GLS statsmodels с фреймом данных, предназначенным для хранения как одномерных данных, так и результатов моделей, когда модели проходят итерацию.У меня проблемы с выяснением, как грамматически объединить два набора данных.
Я ознакомился с документацией панд, найденной ниже, но не повезло:
https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#database-style-dataframe-or-named-series-joining-merging
Это сложно из-за результатов модели по сравнению с финальной таблицей, которая содержит значения каждого уникального уровня каждой уникальной переменной.
Посмотрите пример того, как выглядят данные, с помощью приведенного ниже кода:
import pandas as pd
df = {'variable': ['CLded_model','CLded_model','CLded_model','CLded_model','CLded_model','CLded_model','CLded_model'
,'channel_model','channel_model','channel_model']
, 'level': [0,100,200,250,500,750,1000, 'DIR', 'EA', 'IA']
,'value': [460955.7793,955735.0532,586308.4028,12216916.67,48401773.87,1477842.472,14587994.92,10493740.36
,36388470.44,31805316.37]}
final_table = pd.DataFrame(df)
df2 = {'variable': ['intercept','C(channel_model)[T.EA]','C(channel_model)[T.IA]', 'CLded_model']
, 'coefficient': [-2.36E-14,-0.091195797,-0.244225888, 0.00174356]}
model_results = pd.DataFrame(df2)
После этого вы можете увидеть, что для категориальных переменных значение увеличивается в несколько сравниваемых слоевк финальной таблице.Числовые значения, такие как CLded_model
, должны быть объединены с одним коэффициентом, с которым он связан.
В этом есть много чего, и я не уверен, с чего начать.
Обновление: следующий код дает желаемый результат:
d3 = {'variable': ['intercept', 'CLded_model','CLded_model','CLded_model','CLded_model','CLded_model','CLded_model'
,'CLded_model','channel_model','channel_model','channel_model']
, 'level': [None, 0,100,200,250,500,750,1000, 'DIR', 'EA', 'IA']
,'value': [None, 60955.7793,955735.0532,586308.4028,12216916.67,48401773.87,1477842.472,14587994.92,10493740.36
,36388470.44,31805316.37]
, 'coefficient': [ -2.36E-14, 0.00174356, 0.00174356, 0.00174356, 0.00174356, 0.00174356 ,0.00174356
, 0.00174356,None, -0.091195797,-0.244225888, ]}
desired_result = pd.DataFrame(d3)