Python
 Computer >> コンピューター >  >> プログラミング >> Python

【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()メソッドの引数に、削除したいレベルの位置(0始まりの整数)を渡します。ここでは、位置「3」にあたる4番目のレベルを削除しています。

print("\nDropping a level...\n",multiIndex.droplevel(3))

サンプルコード

以下に完全なコード例を示します。

import pandas as pd

# マルチインデックスを作成
# namesパラメータで各レベルに名前を設定
multiIndex = pd.MultiIndex.from_arrays([[5, 10], [15, 20], [25, 30], [35, 40]],
names=['a', 'b', 'c', 'd'])

# マルチインデックスを表示
print("Multindex...\n",multiIndex)

# レベルを削除
# 削除するレベルの位置を引数として渡す
print("\nDropping a level...\n",multiIndex.droplevel(3))

実行結果

上記のコードを実行すると、次のような出力が得られます。

Multindex...
MultiIndex([( 5, 15, 25, 35),(10, 20, 30, 40)],names=['a', 'b', 'c', 'd'])

Dropping a level...
MultiIndex([( 5, 15, 25),(10, 20, 30)],names=['a', 'b', 'c'])

補足:レベル名を指定して削除することも可能

droplevel()メソッドには、レベルの位置だけでなく、namesパラメータで設定したレベル名を直接指定することもできます。例えば、上記の例と同じ結果を得るには、次のように書けます。

print(multiIndex.droplevel('d'))

このように、位置番号よりもレベル名で指定した方が、コードの意図が明確になり可読性が向上します。状況に応じて使い分けるとよいでしょう。

  1. Pythonでリストのインデックスと値が一致する要素を抽出する方法

    Pythonでは、リスト内の「インデックスと値が一致する要素」を表示したい場合、シンプルな反復処理と組み込み関数 enumerate() を使うことで簡単に実現できます。enumerate() は、リストを走査する際に各要素のインデックスと値を同時に取得できる便利な関数です。これにより、インデックス番号と要素の値を比較する処理を直感的に記述できます。以下に具体的な実装例を示します。サンプルコードmy_list = [33, 1, 2, 45, 41, 13, 6, 9] print(リストの内容:) print(my_list) my_result = [] for index, elem

  2. Pythonでリストのインデックスを値とする辞書を作成する方法

    この記事では、Pythonで頻繁に使われるコレクションの一つである「リスト」から辞書を作成する方法を解説します。リスト自体にはインデックスやキーが含まれていませんが、辞書ではすべての要素(値)に対してキーやインデックスを関連付ける必要があります。ここでは、リストの各要素を「値」として持ち、その位置(インデックス)を対応する値として格納する辞書の作り方を、2つの異なるアプローチで紹介します。enumerate関数を使う方法enumerate関数は、イテラブルなオブジェクトの各要素にカウンター(連番)を割り当ててくれる便利な組み込み関数です。この関数を対象のリストに適用し、forループと組み合わせ