Python Pandas入門:レベル名を指定してMultiIndexから特定の階層を削除する方法(droplevel)
PandasのMultiIndex(マルチインデックス)から、レベル名を指定して特定の階層を削除した結果を取得するには、MultiIndex.droplevel()メソッドを使用します。引数として、削除したいレベル名を渡します。
必要なライブラリのインポート
まず、必要なライブラリをインポートします。
import pandas as pd
MultiIndexとは
MultiIndexは、Pandasオブジェクトで使用できる複数階層(階層的)なインデックスオブジェクトです。単一のインデックスでは表現しきれない、多次元的なデータ分類に役立ちます。
まず、インデックスのもととなる配列を作成します。
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
次に、from_arrays()メソッドを使ってMultiIndexを作成します。このとき「names」パラメータを指定すると、各インデックスレベルに名前を付けることができます。レベル名を付けておくことで、後から位置番号ではなく名前でレベルを操作でき、コードの可読性が向上します。
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
レベル名を指定して階層を削除する
MultiIndexから特定のレベルを削除するには、droplevel()メソッドの引数に削除したいレベル名を指定します。
ここでは、レベル名「student」を削除してみましょう。
print("\nレベル削除後のMulti-index...\n", multiIndex.droplevel('student'))
完全なサンプルコード
以下が実行コード全体です。
import pandas as pd
# MultiIndexはPandasオブジェクト用の多階層(階層的)インデックスオブジェクト
# 配列を作成
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]
# 「names」パラメータで各インデックスレベルに名前を設定
# from_arrays()を使ってMultiIndexを作成
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
# MultiIndexを表示
print("The Multi-index...\n", multiIndex)
# MultiIndexのレベルを取得して表示
print("\nThe levels in Multi-index...\n", multiIndex.levels)
# 特定のレベルを削除
# 引数には削除するレベル名を指定 → レベル名'student'が削除される
print("\nMulti-index after dropping a level...\n", multiIndex.droplevel('student'))
実行結果
上記のコードを実行すると、以下のような出力が得られます。
The Multi-index...
MultiIndex([(2, 'Peter'),
(4, 'Chris'),
(3, 'Andy'),
(1, 'Jacob')],
names=['ranks', 'student'])
The levels in Multi-index...
[[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter']]
Multi-index after dropping a level...
Int64Index([2, 4, 3, 1], dtype='int64', name='ranks')
ポイントまとめ
droplevel()には、レベルの位置番号(整数)だけでなくレベル名(文字列)も指定できます。- レベル名を指定する場合は、MultiIndex作成時に
namesパラメータで名前を付けておく必要があります。 - レベルを1つ削除すると、残りのレベルのみを持つ通常のIndexが返されます。
-
Python – レベル名を指定して複数の階層を削除し、インデックスを返す方法
pandasのマルチインデックス(MultiIndex)から、レベル名を指定して複数の階層をまとめて削除したい場合は、multiIndex.droplevel() メソッドを使用します。引数には、削除したいレベルの名前をリスト形式で渡します。必要なライブラリのインポートまず、pandasをインポートします。import pandas as pdマルチインデックスの作成次に、マルチインデックスを作成します。names パラメータを指定すると、インデックスの各階層に名前を付けることができます。multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15,
-
【Python・Pandas】MultiIndexから特定のレベルを削除したインデックスを返す方法
PandasのMultiIndex.droplevel()メソッドを使用すると、マルチインデックスから指定したレベルを削除した新しいインデックスを取得できます。まずは、必要なライブラリをインポートしましょう。import pandas as pd次に、マルチインデックスを作成します。namesパラメータを指定すると、インデックスの各レベルに名前を設定できます。multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15, 20], [25, 30], [35, 40]], names=[a, b, c, d])レベルを削除するには、droplevel