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 つの項目を含むインデックスが表示されます。

最終的な目標は、上記のインデックスを列に変換することです。
ステップ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」というヘッダーを持つ列になりました。また、左側に新しいシーケンシャルインデックスが追加されました。

「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 でマルチインデックスを複数列に変換する
以下は 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 が表示されます。

次のコードを使用して、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 つの新しい列が表示されます。

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」インデックスはインデックスのままです)。
