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

Python Pandas – マルチインデックスを特定のレベルで降順にソートする方法

Pandasでマルチインデックス(MultiIndex)を作成するには、from_arrays()メソッドを使用します。一方、作成したマルチインデックスを特定のレベルで並べ替えるには、sortlevel()メソッドを使います。並べ替えの対象となるレベルを引数として指定し、降順でソートしたい場合はascendingパラメータをFalseに設定します。

マルチインデックスを降順でソートする手順

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

import pandas as pd

マルチインデックスとは、Pandasオブジェクトに対して使用できる複数階層(階層的)なインデックスオブジェクトのことです。ここでは、数値と文字列を含む2つの配列を作成します。

arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]

namesパラメータを指定すると、各インデックスレベルに名前を付けることができます。そして、from_arrays()メソッドを使ってマルチインデックスを生成します。

multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

次に、sortlevel()メソッドでマルチインデックスを並べ替えます。第1引数にはソート対象のレベルを指定します(ここではレベル1)。降順でソートするため、ascending=Falseを設定しています。

print("\n指定したレベルでマルチインデックスを降順にソート...\n", multiIndex.sortlevel(1, ascending=False))

完全なコード例

以下がサンプルコード全体です。

import pandas as pd

# マルチインデックスは、Pandasオブジェクト用の多階層(階層的)なインデックスオブジェクト
# 配列を作成
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]

# namesパラメータで各インデックスレベルに名前を設定
# from_arrays()を使ってマルチインデックスを作成
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

# マルチインデックスを表示
print("マルチインデックス...\n", multiIndex)

# マルチインデックスのレベルを取得
print("\nマルチインデックスのレベル...\n", multiIndex.levels)

# マルチインデックスをソート
# ソート対象のレベルを引数として指定(ここではレベル1)
# ascending=False を指定して降順にソート
print("\n指定したレベルでマルチインデックスを降順にソート...\n", multiIndex.sortlevel(1, ascending=False))

実行結果

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

マルチインデックス...
MultiIndex([(2, 'Peter'),
            (4, 'Chris'),
            (3, 'Andy'),
            (1, 'Jacob')],
           names=['ranks', 'student'])

マルチインデックスのレベル...
    [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter']]

指定したレベルでマルチインデックスを降順にソート...
(MultiIndex([(2, 'Peter'),
             (1, 'Jacob'),
             (4, 'Chris'),
             (3, 'Andy')],
             names=['ranks', 'student']), array([0, 3, 1, 2], dtype=int64))

ポイントまとめ

  • from_arrays():配列からマルチインデックスを作成するメソッド
  • sortlevel(level):指定したレベルでマルチインデックスをソートするメソッド
  • ascending=False:降順ソートを有効にするパラメータ
  • 戻り値として、ソート済みのMultiIndexと元の位置を示す整数配列のタプルが返される
  1. 【Python・Pandas】データフレームの特定の列の合計値を取得する方法

    データ分析をしていると、データフレーム(DataFrame)の中から特定の列だけの合計値を求めたい場面によく出会います。そんなときに便利なのが、Pandasのsum関数です。 合計を計算したい列をsum関数に渡すだけで、その列の合計値を簡単に取得できます。さらに、axis引数を指定すれば、列方向・行方向のどちらで集計するかも自由に制御可能です。 それでは、具体的なコード例を見ていきましょう。 サンプルコード import pandas as pd my_data = { Name: pd.Series([Tom, Jane, Vin, Eve, Will]), Age: p

  2. Pythonで単語をアルファベット順に並べ替える方法

    文字列オブジェクトに複数の単語が1つのスペースで区切られて含まれている場合、Pythonでは簡単な手順でアルファベット順に並べ替えることができます。まず文字列クラスの split() メソッドを使うと、スペースで区切られた単語がリストとして返されます。その後、組み込みリストクラスの sort() メソッドを呼び出すことで、このリストをソートできます。基本的な手順以下は、文字列内の単語をアルファベット順に並べ替える具体的な例です。>>> string = Hello how are you? >>> word_list = string.split() >