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

Python Pandas – MultiIndexのレベルを入れ替える方法(swaplevel)

PandasでMultiIndex(マルチインデックス)のレベルを入れ替えるには、swaplevel()メソッドを使用します。入れ替えたい2つのレベルを引数として指定するだけで、簡単に順序を変更できます。

まず、必要なライブラリをインポートしましょう。

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のレベルを入れ替えるには、swaplevel()を使用します。第1引数には入れ替え対象となる最初のインデックスレベルを、第2引数には2番目のインデックスレベルを指定します。

print("\nSwap levels in MultiIndex...\n", multiIndex.swaplevel(0, 2))

サンプルコード

以下が完全なコード例です。

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 MultiIndex...\n", multiIndex)

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

# swaplevel()を使ってMultiIndexのレベルを入れ替える
# 第1引数:入れ替える最初のインデックスレベル
# 第2引数:入れ替える2番目のインデックスレベル
print("\nSwap levels in MultiIndex...\n", multiIndex.swaplevel(0, 2))

実行結果

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

The MultiIndex...
MultiIndex([(2, 'Peter', 50),
            (4, 'Chris', 30),
            (3, 'Andy', 40),
            (1, 'Jacob', 70)],
            names=['rank', 'student', 'points'])

The levels in MultiIndex...
    [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter'], [30, 40, 50, 70]]

Swap levels in MultiIndex...
MultiIndex([(50, 'Peter', 2),
            (30, 'Chris', 4),
            (40, 'Andy', 3),
            (70, 'Jacob', 1)],
            names=['points', 'student', 'rank'])

ポイントまとめ

  • swaplevel()は、MultiIndex内の任意の2つのレベルの順序を入れ替えるためのメソッドです。
  • 引数にはレベル番号(0始まり)またはレベル名を指定できます。負の値もサポートされており、-1は最後のレベルを意味します。
  • 元のMultiIndex自体は変更されず、入れ替え後の新しいMultiIndexが返されます。
  1. Python – Pandas DataFrame.rename()で列名を変更する方法

    Pandasでは、rename()メソッドを使うことで、DataFrameの列名をとても簡単に変更できます。変更したい現在の列名と新しい列名を辞書形式で渡すだけでOKです。この記事では、具体例を通じてその手順をわかりやすく解説します。 手順 サイズ変更可能な2次元の表形式データ(DataFrame)dfを作成します。 入力となるDataFrame dfを出力して内容を確認します。 rename()メソッドを使って列名を変更します。ここでは、列「x」を新しい名前「new_x」に変更します。 列名を変更した後のDataFrameを出力します。 コード例 import pandas as pd

  2. PythonでマルチインデックスのPandas DataFrameから特定の行を削除する方法

    マルチインデックス(MultiIndex)を持つPandas DataFrameから特定の行を削除するには、drop()メソッドを使用します。このメソッドに行ラベル(タプル形式)とaxis=0を指定することで、目的の行を簡単に取り除くことができます。マルチインデックスDataFrameの作成まず、マルチインデックス用の配列を作成します。第1レベルに「car」「bike」「truck」、第2レベルに「valueA」「valueB」「valueC」を設定します。arr = [np.array([car, car, car, bike, bike, bike, truck, truck, truck