Python Pandas – MultiIndexのレベル名を指定して、新しい特定のレベルを1つだけ設定する方法
MultiIndex(マルチインデックス)において、レベル名を指定して特定の1つのレベルだけを新しい値に置き換えたい場合は、MultiIndex.set_levels()メソッドを使用します。このとき、levelパラメータに変更したいレベルの名前を指定することで、他のレベルに影響を与えることなく、目的のレベルのみを更新できます。
必要なライブラリのインポート
まず、必要なライブラリをインポートします。
import pandas as pd
MultiIndexは、pandasオブジェクトのための多階層(階層的)なインデックスオブジェクトです。まずはインデックスのもととなる配列を作成します。
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]
namesパラメータを使うと、各インデックスレベルに名前を付けることができます。ここでは「ranks」(順位)と「student」(学生名)という2つのレベル名を設定しています。そして、from_arrays()メソッドを使用してMultiIndexを作成します。
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))
レベル名を指定して新しいレベルを設定する
次に、MultiIndexに対して新しいレベルを設定します。set_levels()メソッドのlevelパラメータにレベル名「student」を指定することで、「student」レベルだけを新しい名前のリストに置き換えています。「ranks」レベルはそのまま維持されます。
print("\nSet a new level in Multi-index...\n", multiIndex.set_levels(['Emma', 'Angelina', 'Scarlett', 'Jeni'], level='student'))
完全なコード例
以下が実行コード全体です。
import pandas as pd
# MultiIndexはpandasオブジェクトのための多階層インデックスオブジェクト
# 配列を作成
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]
# 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("\nSet a new level in Multi-index...\n", multiIndex.set_levels(['Emma', 'Angelina', 'Scarlett', 'Jeni'], level='student'))
出力結果
上記のコードを実行すると、以下のような出力が得られます。
The Multi-index...
MultiIndex([(1, 'John'),
(2, 'Tim'),
(3, 'Jacob'),
(4, 'Chris')],
names=['ranks', 'student'])
The levels in Multi-index...
[[1, 2, 3, 4], ['Chris', 'Jacob', 'John', 'Tim']]
Set a new level in Multi-index...
MultiIndex([(1, 'Scarlett'),
(2, 'Jeni'),
(3, 'Angelina'),
(4, 'Emma')],
names=['ranks', 'student'])
ポイントまとめ
- set_levels()メソッドは、既存のレベルの値を新しい値のリストで置き換えます。
- levelパラメータには、レベル番号(整数)だけでなく、レベル名(文字列)も指定できます。レベル名を指定すれば、コードの可読性が向上します。
- levelパラメータに特定のレベル名を渡すことで、他のレベルを変更せずに、そのレベルだけを更新できます。
- 注意点として、新しい値のリストは元のレベルと同じ長さである必要があります。
-
【Pandas】MultiIndexのレベル名を指定して階層を削除し、インデックスを返す方法
Pandasでマルチインデックス(MultiIndex)から特定の階層を削除し、その結果のインデックスを返すには、multiIndex.droplevel() メソッドを使用します。削除したい階層の名前を引数として指定するだけで、簡単に操作できます。この記事では、レベル名を使って階層を削除する具体的な手順を、サンプルコードとともにわかりやすく解説します。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdマルチインデックスの作成次に、マルチインデックスを作成します。names パラメータを指定すると、インデックスの各階層に名前を付けること
-
Python Pandas入門:putmask()でマスク条件に基づく新しいインデックスを生成する方法
はじめにマスク(条件式)を使って値を置き換えた新しいインデックスを取得したい場合は、Pandasのindex.putmask()メソッドを使用します。このメソッドは、指定した条件がTrueとなる要素を、別の値で置き換えた新しいIndexオブジェクトを返します。まず、必要なライブラリをインポートしましょう。import pandas as pdPandasインデックスの作成次に、数値を含むPandasインデックスを作成します。index = pd.Index([5, 65, 10, 17, 75, 40])作成したインデックスを表示して確認してみましょう。print(Pandas Index..