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

Python Pandas:MultiIndexのレベルを列にしたDataFrameを作成し、インデックスレベル名を置き換える方法

MultiIndex(マルチインデックス)の各レベルを列として持つDataFrameを作成するには、MultiIndex.to_frame()メソッドを使用します。また、nameパラメータを指定することで、インデックスレベル名を任意の名前に置き換えることができます。

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

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

import pandas as pd

MultiIndexとは

MultiIndexは、pandasオブジェクトで使用できる階層型(マルチレベル)のインデックスオブジェクトです。単一のインデックスでは表現できない多次元データを効率的に扱うために利用されます。

配列の作成

まず、MultiIndexのもととなる配列を作成します。

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

MultiIndexの作成

from_arrays()メソッドを使って、作成した配列からMultiIndexを生成します。「names」パラメータを指定すると、各インデックスレベルに名前を付けることもできます。

multiIndex = pd.MultiIndex.from_arrays(arrays)

to_frame()でDataFrameを作成する

to_frame()メソッドを使用すると、MultiIndexの各レベルが列となったDataFrameを作成できます。ここでnameパラメータに新しい列名のリストを渡すと、元のインデックスレベル名を指定した名前に置き換えられます。

dataFrame = multiIndex.to_frame(name=['One', 'Two'])

完全なコード例

以下に、これまでの手順をまとめたサンプルコードを示します。

import pandas as pd

# MultiIndexは階層型(マルチレベル)のインデックスオブジェクトです
# 配列を作成
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]

# from_arrays()を使ってMultiIndexを作成
multiIndex = pd.MultiIndex.from_arrays(arrays)

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

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

# to_frame()でMultiIndexのレベルを列としたDataFrameを作成
# nameパラメータでインデックスレベル名を「One」「Two」に置き換え
dataFrame = multiIndex.to_frame(name=['One', 'Two'])

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

実行結果

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

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

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

The DataFrame...
          One   Two
1  John     1  John
2  Tim      2   Tim
3  Jacob    3 Jacob
4  Chris    4 Chris

このように、to_frame()メソッドとnameパラメータを組み合わせることで、MultiIndexのレベルを列に変換しつつ、列名を自由にカスタマイズした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でDataFrameのインデックスと列を転置(入れ替え)する3つの方法

    はじめにpandasのDataFrameでは、行と列を入れ替える「転置(transpose)」操作がよく使われます。本記事では、特定のDataFrameのインデックスと列を転置するための3つの方法を、具体的なコード例とともにわかりやすく解説します。たとえば、次のような元のDataFrameがあるとします。import pandas as pd data = [[1,2,3],[4,5,6]] df = pd.DataFrame(data) print(元のDataFrame:\n, df)出力結果:元のDataFrame: 0 1 2 0 1 2 3 1 4 5 6このDataFrame