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

【Python・Pandas】配列からマルチインデックスを作成する方法(MultiIndex.from_arrays)

Pandasでは、複数の配列(リスト)を組み合わせて階層的なインデックス(マルチインデックス)を簡単に作成できます。本記事では、MultiIndex.from_arrays()メソッドを使って、配列からマルチインデックスを生成する手順を解説します。

1. 元となる配列を用意する

まずは、マルチインデックスの第1レベルとなる「車種」の配列を作成します。

car = ['Audi', 'Lexus', 'Tesla', 'Mercedes', 'BMW', 'Toyota', 'Nissan', 'Bentley', 'Mustang']

次に、第2レベルとなる「登録価格(Registration Price)」の配列を用意します。

reg_price = [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]

2. MultiIndex.from_arrays()でマルチインデックスを作成する

用意した2つの配列をpd.MultiIndex.from_arrays()に渡すことで、マルチインデックスを生成できます。names引数を指定すると、各レベルに名前を付けることも可能です。

サンプルコード

import pandas as pd

# 車種の配列
car = ['Audi', 'Lexus', 'Tesla', 'Mercedes', 'BMW', 'Toyota', 'Nissan', 'Bentley', 'Mustang']

# 登録価格の配列
reg_price = [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]

# 配列を組み合わせてマルチインデックスを作成
print(pd.MultiIndex.from_arrays([car, reg_price], names=('car', 'reg_price')))

実行結果

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

MultiIndex(levels=[['Audi', 'BMW', 'Bentley', 'Lexus', 'Mercedes', 'Mustang', 'Nissan', 'Tesla', 'Toyota'], [900, 1000, 1100, 1150, 1300, 1350, 1400, 1700, 1800]],
           codes=[[0, 3, 7, 4, 1, 8, 6, 2, 5], [1, 6, 2, 0, 7, 8, 4, 3, 5]],
           names=['car', 'reg_price'])

出力内容のポイント

  • levels:各レベルに含まれるユニークな値の一覧です。車種名と価格がそれぞれソートされて格納されています。
  • codes:元のデータの各行が、どのレベル値に対応するかを示すインデックス番号です。
  • namesnames=('car', 'reg_price')で指定した通り、第1レベルが「car」、第2レベルが「reg_price」という名前になっています。

このようにMultiIndex.from_arrays()を使えば、複数の配列から柔軟に階層型インデックスを作成でき、DataFrameの行ラベルとして活用することで、多次元データの扱いが格段にしやすくなります。

  1. PythonとPandasのpipe()メソッドでパイプラインを作成する方法

    Pandasでパイプラインを作成するには、pipe()メソッドを使用します。pipe()を使うことで、DataFrameに対して任意の関数を連続的に適用でき、データ処理の流れを簡潔かつ読みやすい形で記述できます。準備:pandasのインポートまず、必要なpandasライブラリをエイリアス付きでインポートします。import pandas as pdDataFrameの作成次に、サンプル用のDataFrameを作成します。dataFrame = pd.DataFrame( { Car: [BMW, Lexus, Audi, Mustang, Bentley, Jaguar],

  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