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

Python Pandas:MultiIndexで指定したレベルのラベル値を取得する方法(get_level_values)


MultiIndex(マルチインデックス)において、指定したレベルのラベル値をベクトルとして取得するには、multiIndex.get_level_values() メソッドを使用します。引数には、レベル番号(整数)またはレベル名(文字列)を指定できます。

get_level_values()メソッドの概要

MultiIndexは、pandasオブジェクトに対して使用できるマルチレベル(階層型)のインデックスです。get_level_values()メソッドを呼び出すと、該当するレベルのラベル値がIndexオブジェクトとして返されます。これにより、特定のレベルだけを抽出して、データの集計やフィルタリングなどに活用できます。

ライブラリのインポート

まず、必要なライブラリであるpandasをインポートします。

import pandas as pd

MultiIndexの作成

MultiIndexは、pandasオブジェクトのためのマルチレベル(階層的)なインデックスオブジェクトです。ここでは from_arrays() を使って配列からMultiIndexを作成し、各レベルに「One」「Two」という名前を付けています。

multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], names=['One', 'Two'])

MultiIndexの表示

作成したMultiIndexを表示して内容を確認します。

print("The MultiIndex...\n", multiIndex)

MultiIndexのレベル一覧を取得

MultiIndexに含まれるレベルの一覧を取得します。

print("\nThe levels in MultiIndex...\n", multiIndex.levels)

レベル0のラベル値を取得

get_level_values() にレベル番号「0」を渡して、レベル0のラベル値を取得します。

print("\nLevel values...\n", multiIndex.get_level_values(0))

サンプルコード(完全版)

以下に、ここまでの手順をまとめたコード全体を示します。最後に、レベル名「Two」を指定してラベル値を取得する例も追加しています。

import pandas as pd

# MultiIndexは、pandasオブジェクトのためのマルチレベル(階層的)なインデックスオブジェクト
multiIndex = pd.MultiIndex.from_arrays([list('pqrrss'), list('strvwx')], names=['One', 'Two'])

# MultiIndexを表示
print("The MultiIndex...\n", multiIndex)

# MultiIndexのレベル一覧を取得
print("\nThe levels in MultiIndex...\n", multiIndex.levels)

# レベル0のラベル値を取得
print("\nLevel values...\n", multiIndex.get_level_values(0))

# レベル名「Two」を指定してラベル値を取得
print("\nLevel values...\n", multiIndex.get_level_values("Two"))

実行結果

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

The MultiIndex...
MultiIndex([('p', 's'),
            ('q', 't'),
            ('r', 'r'),
            ('r', 'v'),
            ('s', 'w'),
            ('s', 'x')],
            names=['One', 'Two'])

The levels in MultiIndex...
   [['p', 'q', 'r', 's'], ['r', 's', 't', 'v', 'w', 'x']]

Level values...
   Index(['p', 'q', 'r', 'r', 's', 's'], dtype='object', name='One')

Level values...
   Index(['s', 't', 'r', 'v', 'w', 'x'], dtype='object', name='Two')

まとめ

get_level_values()メソッドを使えば、MultiIndexから任意のレベルのラベル値を簡単に抽出できます。引数にはレベル番号(0始まりの整数)とレベル名(文字列)のどちらでも指定できるため、コードの可読性を高めたい場合はレベル名での指定がおすすめです。


  1. Python Pandas入門 – インデックスから一意の値を取得する方法(index.unique)

    Pandasでインデックス(Index)に含まれる一意の値(重複を除いた値)を取得するには、index.unique()メソッドを使用します。このメソッドは、値を出現順にそのまま返すのが特徴で、自動的に並べ替え(ソート)は行われません。 まず、必要なライブラリをインポートしましょう。 import pandas as pd Pandasインデックスの作成 サンプルとして、重複した値を含む整数のインデックスを作成します。 index = pd.Index([10, 50, 70, 10, 90, 50, 10, 30]) インデックスの内容を確認する print()関数を使って、作成したイン

  2. Python・PandasでDataFrameの無限大の値に対してTrueを表示する方法

    Pandasのisin()メソッドを使用すると、DataFrame内の無限大(inf)の値に該当するセルに対してTrueを表示できます。この記事では、NumPyのnp.infを使って無限大の値を含むDataFrameを作成し、それらを検出してTrueとして表示する手順を解説します。必要なライブラリのインポートまず、PandasとNumPyをそれぞれ別名(エイリアス)を付けてインポートします。import pandas as pd import numpy as np無限大の値を含むデータの準備次に、リストを値にもつ辞書を作成します。ここではNumPyのnp.infを使って、無限大の値を意図的に