DataFrameでマルチカラムの2段目だけを指定してデータを取得する方法


概要

PandasのDataFrameでマルチカラムの2段目だけを指定してデータを取得する方法です。
下記のようなDataFrameの場合、2段目が「予算」の列だけ取得したいという場合を想定しています。

python
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(100, 10000, (6, 4)), 
                  columns = [
                      ['上期', '上期', '下期', '下期'], 
                      ['予算', '実績', '予算', '実績']
                  ], 
                  index = ['人件費', '減価償却費', '光熱費', '旅費交通費', '消耗品費', 'その他経費']
                 )
上期 下期
予算 実績 予算 実績
人件費 9611 8670 7938 4301
減価償却費 3696 6232 8410 1416
光熱費 8408 6698 4506 157
旅費交通費 8270 7533 9716 4732
消耗品費 4793 4894 962 8419
その他経費 6666 5125 6224 5593

方法

2段目だけ指定する場合は、pd.IndexSliceを使用します。
下記のように指定すると、2段目が「予算」の列を抽出できます。

python
df.loc[:, pd.IndexSlice[:, '予算']]
上期 下期
予算 予算
人件費 9611 7938
減価償却費 3696 8410
光熱費 8408 4506
旅費交通費 8270 9716
消耗品費 4793 962
その他経費 6666 6224