Я знаю, что есть несколько вопросов о вложенных словарях в dataframe, но их решения не работают для меня. У меня есть датафрейм, который содержится в словаре, который содержится в другом словаре, например:
df1 = pd.DataFrame({'2019-01-01':[38],'2019-01-02':[43]},index = [1,2])
df2 = pd.DataFrame({'2019-01-01':[108],'2019-01-02':[313]},index = [1,2])
da = {}
da['ES']={}
da['ES']['TV']=df1
da['ES']['WEB']=df2
Я хочу получить следующее:
df_final = pd.DataFrame({'market':['ES','ES','ES','ES'],'device':['TV','TV','WEB','WEB'],
'ds':['2019-01-01','2019-01-02','2019-01-01','2019-01-02'],
'yhat':[43,38,423,138]})
Получение кода из другого SO вопроса, который я пробовал:
market_ids = []
frames = []
for market_id,d in da.items():
market_ids.append(market_id)
frames.append(pd.DataFrame.from_dict(da,orient = 'index'))
df = pd.concat(frames, keys=market_ids)
Что дает мне фрейм данных с несколькими индексами и устройствами в качестве имен столбцов.
Спасибо