Python Pandas入門:レベル名を指定して複数の階層を削除したMultiIndexを返す方法
pandasのMultiIndexから複数の階層(レベル)を削除した新しいMultiIndexを取得するには、MultiIndex.droplevel()メソッドを使用します。削除したい複数のレベル名を引数として渡すことで、一括して階層を取り除くことができます。
必要なライブラリのインポート
まず、pandasをインポートします。
import pandas as pd
MultiIndexとは
MultiIndexは、pandasオブジェクトで使用できる多階層(階層的)なインデックスオブジェクトです。単一のインデックスと異なり、複数のキーを組み合わせてデータを階層的に管理できます。
配列の作成
ここでは、数値・名前・点数の3つの配列を作成します。
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
MultiIndexの作成
namesパラメータを使うと、各インデックス階層に名前を付けることができます。from_arrays()メソッドで配列からMultiIndexを生成します。
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))レベル名を指定して階層を削除する
droplevel()メソッドの引数に、削除したいレベル名をリスト形式で指定します。この例では、'rank'と'student'という2つのレベル名を指定して削除し、'points'のみのインデックスを取得します。
print("\n2つのレベルを削除した後のMulti-index...\n", multiIndex.droplevel(['rank', 'student']))完全なサンプルコード
以下に全体のコードを示します。
import pandas as pd
# MultiIndexはpandasオブジェクト用の多階層(階層的)なインデックスオブジェクト
# 配列を作成
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob'], [50, 30, 40, 70]]
# namesパラメータで各インデックス階層に名前を設定
# from_arrays()でMultiIndexを作成
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('rank', 'student', 'points'))
# MultiIndexを表示
print("The Multi-index...\n", multiIndex)
# MultiIndexの各レベルを取得
print("\nThe levels in Multi-index...\n", multiIndex.levels)
# 特定のレベルを削除
# 削除するレベルはレベル名としてパラメータに指定
# つまり 'student' と 'rank' の2つのレベルが削除される
print("\nMulti-index after dropping two levels...\n", multiIndex.droplevel(['rank', 'student']))実行結果
上記のコードを実行すると、次のような出力が得られます。
The Multi-index...
MultiIndex([(2, 'Peter', 50),
(4, 'Chris', 30),
(3, 'Andy', 40),
(1, 'Jacob', 70)],
names=['rank', 'student', 'points'])
The levels in Multi-index...
[[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter'], [30, 40, 50, 70]]
Multi-index after dropping two levels...
Int64Index([50, 30, 40, 70], dtype='int64', name='points')実行結果からわかるように、'rank'と'student'の2つの階層が削除され、'points'という名前を持つ単一レベルのInt64Indexが返されています。このようにdroplevel()にレベル名のリストを渡すことで、複数の階層を一度に簡単に削除できます。
-
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