У меня есть фрейм данных Pandas, использующий мультииндекс, который был создан следующим образом:
indices = [['one', 'two', 'three', 'four'], ['oob']]
index = pd.MultiIndex.from_product(indices, names=['first', 'second'])
results = pd.DataFrame(index=index, columns=['col1', 'col2', 'col3', 'col4', 'col5'])
... input values ...
col1 col2 col3 col4 col5
first second
one oob 0.87 0.56 0.46 0.50 0.48
two oob 0.87 0.57 0.23 0.33 0.26
three oob 0.76 0.25 0.36 0.30 0.33
four oob 0.73 0.23 0.38 0.29 0.33
Что я хотел бы сделать, так это добавить еще один уровень (я считаю, что это правильный термин) в фрейм данных, чтобы он выглядел следующим образом:
col1 col2 col3 col4 col5
first second
one oob 0.87 0.56 0.46 0.50 0.48
one meh NaN NaN NaN NaN Nan
two oob 0.87 0.57 0.23 0.33 0.26
two meh NaN NaN NaN NaN Nan
three oob 0.76 0.25 0.36 0.30 0.33
three meh NaN NaN NaN NaN Nan
four oob 0.73 0.23 0.38 0.29 0.33
four meh NaN NaN NaN NaN Nan
Мне удалось добиться именно этого путем воссоздания индекса и последующего вызова resutlts.reindex(index=index)
, но это кажется немного затянуто и требует сохранения исходных индексов в некоторой переменной. Есть ли лучший способ сделать это.
Для полноты картины я также попытался использовать concat
, но я действительно наносил удар в темноте.