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

Python Pandas – MultiIndexのレベルを列としてDataFrameを作成する方法

MultiIndexの各レベルを列として持つDataFrameを作成するには、Pandasのto_frame()メソッドを使用します。このメソッドを使うことで、階層的なインデックス情報をそのまま表形式のデータへ変換できます。

必要なライブラリのインポート

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

import pandas as pd

MultiIndexは、pandasオブジェクトに対する多階層(階層型)のインデックスオブジェクトです。まずは基となる配列を作成しましょう。

arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]

「names」パラメータで各インデックスレベルに名前を設定し、from_arrays()メソッドを使ってMultiIndexを作成します。

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

続いて、to_frame()メソッドを使って、MultiIndexのレベルを列とするDataFrameを作成します。

dataFrame = multiIndex.to_frame()

完全なコード例

以下に全体のコードを示します。

import pandas as pd

# MultiIndexはpandasオブジェクトのための多階層(階層型)インデックスオブジェクト
# 配列を作成
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]

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

# MultiIndexを表示
print("The Multi-index...\n", multiIndex)

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

# to_frame()でMultiIndexのレベルを列とするDataFrameを作成
dataFrame = multiIndex.to_frame()

# DataFrameを表示
print("\nThe DataFrame...\n", dataFrame)

実行結果

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

The Multi-index...
MultiIndex([(1, 'John'),
            (2, 'Tim'),
            (3, 'Jacob'),
            (4, 'Chris')],
           names=['ranks', 'student'])

The levels in Multi-index...
    [[1, 2, 3, 4], ['Chris', 'Jacob', 'John', 'Tim']]

The DataFrame...
                   ranks   student
ranks  student                    
1      John           1     John
2      Tim            2      Tim
3      Jacob          3    Jacob
4      Chris          4    Chris

出力を見ると、MultiIndexの「ranks」と「student」という2つのレベルが、それぞれDataFrameの列として展開されていることがわかります。また、levels属性を参照すると、各レベルの一意な値のリストを確認できます。

補足:インデックスを残さずにDataFrame化する

デフォルトでは、to_frame()は元のMultiIndexを行インデックスとして保持したままDataFrameを生成します。インデックスを列データだけにしたい場合は、index=Falseを指定します。

dataFrame = multiIndex.to_frame(index=False)

これにより、「ranks」と「student」のみを列として持つ、すっきりしたDataFrameが得られます。用途に応じて使い分けると便利です。

  1. Python Pandas入門:query()メソッドでDataFrameの列をクエリ(条件抽出)する方法

    PandasのDataFrameで列をクエリ(条件による絞り込み)を行うには、query()メソッドを使用します。query()は、文字列形式の条件式を渡すだけで直感的にレコードをフィルタリングできる便利な機能です。 サンプルDataFrameの作成 まず、商品名・期首在庫・期末在庫を持つDataFrameを作成してみましょう。 import pandas as pd dataFrame = pd.DataFrame({ Product: [SmartTV, PenDrive, Speaker, Earphone], Opening_Stock: [300, 700, 1

  2. 【Python】Pandasのreplace()メソッドでDataFrameの値を別のDataFrameの値に置き換える方法

    Pandasでは、replace()メソッドを使うことで、あるDataFrameの値を別のDataFrameから取得した値に簡単に置き換えることができます。この記事では、2つのDataFrameを作成し、片方の値をもう片方の値で置き換える手順を、サンプルコードと実行結果とともにわかりやすく解説します。 基本的な流れ まず、元となる1つ目のDataFrameを作成します。 dataFrame1 = pd.DataFrame({Car: [Audi, Lamborghini], Place: [US, UK], Units: [200, 500]}) 次に、置き換え先となる2つ目のDataFram