MultiIndex の idxmax の結果を元にDataFrame を横展開したい
今、以下のような DataFrame があるとします。
import pandas as pd
mi = pd.MultiIndex(
levels=[['group1', 'group2'], [1,2,3,4]],
codes=[[0,0,1,1], [0,1,2,3]],
names=['group', 'id']
)
df = pd.DataFrame({
'col1': [400, 300, 200, 100],
'col2': [10, 20, 30, 40],
}, index=mi)
df
これに対して、 idxmax をグループしながら実行したとします。
max_idx = df.groupby(level='group').idxmax()
max_idx
これらのデータから、以下のような DataFrame を作りたいです。
pd.DataFrame({
('col1', 'col1'): [400, 200],
('col1', 'col2'): [10, 30],
('col2', 'col1'): [300, 20],
('col2', 'col2'): [100, 40]
}, index=pd.Index(['group1', 'group2'], name='group')).rename_axis(['max_at', 'original_cols'], axis=1)
質問
最後の DataFrame を、 df
と max_idx
の DataFrame から導出するにはどうしたらよいでしょうか?