1. ホーム
  2. python

[解決済み] pandas MultiIndex にレベルをプリペンドする

2022-05-07 23:35:30

質問

グループ化した後に作成したMultiIndexを持つDataFrameがあります。

import numpy as np
import pandas as pd
from numpy.random import randn

df = pd.DataFrame({'A' : ['a1', 'a1', 'a2', 'a3'], 
                   'B' : ['b1', 'b2', 'b3', 'b4'], 
                   'Vals' : randn(4)}
                 ).groupby(['A', 'B']).sum()

#            Vals
# A  B           
# a1 b1 -1.632460
#    b2  0.596027
# a2 b3 -0.619130
# a3 b4 -0.002009

MultiIndexの前にレベルを付けて、次のようなものにするにはどうしたらよいでしょうか。

#                       Vals
# FirstLevel A  B           
# Foo        a1 b1 -1.632460
#               b2  0.596027
#            a2 b3 -0.619130
#            a3 b4 -0.002009

解決方法は?

を使って一行で行うのが良い方法です。 pandas.concat() :

import pandas as pd

pd.concat([df], keys=['Foo'], names=['Firstlevel'])

さらに短い方法。

pd.concat({'Foo': df}, names=['Firstlevel'])

これは、多くのデータフレームに一般化することができます。 ドキュメント .