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

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パラメータに特定のレベル名を渡すことで、他のレベルを変更せずに、そのレベルだけを更新できます。
  • 注意点として、新しい値のリストは元のレベルと同じ長さである必要があります。
  1. 【Pandas】MultiIndexのレベル名を指定して階層を削除し、インデックスを返す方法

    Pandasでマルチインデックス(MultiIndex)から特定の階層を削除し、その結果のインデックスを返すには、multiIndex.droplevel() メソッドを使用します。削除したい階層の名前を引数として指定するだけで、簡単に操作できます。この記事では、レベル名を使って階層を削除する具体的な手順を、サンプルコードとともにわかりやすく解説します。必要なライブラリのインポートまず、必要なライブラリをインポートします。import pandas as pdマルチインデックスの作成次に、マルチインデックスを作成します。names パラメータを指定すると、インデックスの各階層に名前を付けること

  2. 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..