Pandas DataFrame の列(「index」ヘッダー付き)にインデックスを変換するには:

df.reset_index(inplace=True)

「index」ヘッダーの名前をカスタマイズされたヘッダーに変更したい場合は、次のようにします。

df.reset_index(inplace=True)
df.rename(columns={"index": "new_column_name"}, inplace=True)

Pandas DataFrame でインデックスを列に変換する手順

ステップ1: DataFrameを作成する

まず、特定のインデックスを持つ DataFrame を作成します。

import pandas as pd

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone"],
    "Price": [1200, 250, 400, 700, 350],
}

df = pd.DataFrame(data, index=["Item_1", "Item_2", "Item_3", "Item_4", "Item_5"])

print(df)

Python でコードを実行すると、5 つの項目を含むインデックスが表示されます。

Pandas DataFrame のインデックスを列に変換する 1

最終的な目標は、上記のインデックスを列に変換することです。

ステップ2: インデックスを列に変換する

Pandas DataFrame のインデックスを列に変換するには:

df.reset_index(inplace=True)

完全な Python コード:

import pandas as pd

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone"],
    "Price": [1200, 250, 400, 700, 350],
}

df = pd.DataFrame(data, index=["Item_1", "Item_2", "Item_3", "Item_4", "Item_5"])

df.reset_index(inplace=True)

print(df)

ご覧のとおり、以前のインデックスは「index」というヘッダーを持つ列になりました。また、左側に新しいシーケンシャルインデックスが追加されました。

Pandas DataFrame のインデックスを列に変換する 2

「index」ヘッダーの名前を「Items」というカスタマイズされたヘッダーに変更するには:

import pandas as pd

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone"],
    "Price": [1200, 250, 400, 700, 350],
}

df = pd.DataFrame(data, index=["Item_1", "Item_2", "Item_3", "Item_4", "Item_5"])

df.reset_index(inplace=True)
df.rename(columns={"index": "Items"}, inplace=True)

print(df)

新しい列名が表示されます。

Pandas DataFrame のインデックスを列に変換する 4

Pandas DataFrame でマルチインデックスを複数列に変換する

以下は MultiIndex を含む DataFrame の例です。

import pandas as pd

new_index = pd.MultiIndex.from_tuples(
    [
        ("Item_1", "I1"),
        ("Item_2", "I2"),
        ("Item_3", "I3"),
        ("Item_4", "I4"),
        ("Item_5", "I5"),
    ],
    names=["Items", "Type"],
)

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone"],
    "Price": [1200, 250, 400, 700, 350],
}

df = pd.DataFrame(data, index=new_index)

print(df)

MultiIndex が表示されます。

Pandas DataFrame のインデックスを列に変換する 5

次のコードを使用して、MultiIndex を複数の列に変換できます。

import pandas as pd

new_index = pd.MultiIndex.from_tuples(
    [
        ("Item_1", "I1"),
        ("Item_2", "I2"),
        ("Item_3", "I3"),
        ("Item_4", "I4"),
        ("Item_5", "I5"),
    ],
    names=["Items", "Type"],
)

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone"],
    "Price": [1200, 250, 400, 700, 350],
}

df = pd.DataFrame(data, index=new_index)

df.reset_index(inplace=True)

print(df)

次の 2 つの新しい列が表示されます。

Pandas DataFrame のインデックスを列に変換する 6

MultiIndex から特定のインデックスを選択して列にしたい場合はどうすればよいでしょうか?

たとえば、「Type」インデックスを新しい列として選択するには、次のようにします。

import pandas as pd

new_index = pd.MultiIndex.from_tuples(
    [
        ("Item_1", "I1"),
        ("Item_2", "I2"),
        ("Item_3", "I3"),
        ("Item_4", "I4"),
        ("Item_5", "I5"),
    ],
    names=["Items", "Type"],
)

data = {
    "Product": ["Computer", "Printer", "Monitor", "Desk", "Phone"],
    "Price": [1200, 250, 400, 700, 350],
}

df = pd.DataFrame(data, index=new_index)

df.reset_index(inplace=True, level=["Type"])

print(df)

ご覧のとおり、「Type」インデックスは新しい列になりました(「Items」インデックスはインデックスのままです)。

Pandas DataFrame のインデックスを列に変換する 7