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