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

Python Pandas – MultiIndexのレベルを並べ替える方法


MultiIndexのレベルを並べ替える方法

PandasでMultiIndexのレベルを再配置するには、MultiIndex.reorder_levels()メソッドを使用します。orderパラメータにレベルの順序を指定することで、階層インデックスの構成を自由に入れ替えることができます。

ライブラリのインポート

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

import pandas as pd

MultiIndexの作成

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のレベルを並べ替えます。orderパラメータに、新しい順序をリスト形式で指定します。

print("\nレベルを並べ替えた後のMultiIndex...\n", multiIndex.reorder_levels(order=[2, 0, 1]))

コード例全体

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

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

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

# orderパラメータでレベルの順序を指定して並べ替え
print("\nレベルを並べ替えた後のMultiIndex...\n", multiIndex.reorder_levels(order=[2, 0, 1]))

実行結果

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

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

MultiIndexのレベル...
    [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter'], [30, 40, 50, 70]]

レベルを並べ替えた後のMultiIndex...
MultiIndex([(50, 2, 'Peter'),
            (30, 4, 'Chris'),
            (40, 3, 'Andy'),
            (70, 1, 'Jacob')],
            names=['points', 'rank', 'student'])

  1. Python Pandas入門:ネストされた辞書をマルチインデックスDataFrameに変換する方法

    PythonのPandasライブラリでは、ネストされた辞書(入れ子構造のdict)を簡単にマルチインデックス付きのDataFrameへ変換できます。本記事では、その具体的な手順をサンプルコードとともにわかりやすく解説します。全体の流れ変換の手順は以下の3ステップです。ネストされた辞書を作成する空の辞書を用意し、タプル形式のキーで値を再割り当てするpd.DataFrame()でマルチインデックスDataFrameに変換するステップ1:ネストされた辞書を作成するまず、外側のキー(スポーツ名)と内側のキー(Boards・Country)を持つネストされた辞書を定義します。dictNested = {

  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