名前のないインデックスを列にする

これまでの問題で学んだように、reset_index()を使ってインデックスを列に変換した場合、列名には元のインデックスの名前が使用されます。インデックスが無名の場合は、変換後の列名はindexになります。
そのため、名前のないインデックスを列に変換する時は、次の2ステップで行います。

  1. reset_index()を使ってインデックスを列に変換する
  2. rename()を使って、列名をindexから別の名前に変更する

具体的な例を見てみましょう。
下記を元のDataFramedfとします。左上が空欄なので、インデックスの名前(df.index.name)はNoneです。

ProdSale
10/01A00120
10/04B01011
10/05A0058

これまで学んだようにreset_index()を使うと、インデックスを列に変換できます。このとき、列名はデフォルト値であるindexという名前になります

df = df.reset_index()
df
indexProdSale
010/01A00120
110/04B01011
210/05A0058

このindexDateに変えるには、前問で学んだようにrename()を使います。

df = df.rename(columns={"index": "Date"})
df
DateProdSale
010/01A00120
110/04B01011
210/05A0058

演習

import pandas as pd

df = pd.DataFrame(
    [
        ["A001", 20],
        ["B010", 11],
        ["A005", 8],
    ],
    index=["10/01", "10/04", "10/05"],
    columns=["Prod", "Sale"]
)
df
ProdSale
10/01A00120
10/04B01011
10/05A0058

最初に、reset_index()でインデックスを列に変換します。名前のないインデックスを列に変換するとindexという列名になります。

df = df.reset_index()
df
indexProdSale
010/01A00120
110/04B01011
210/05A0058

indexの名前を”Date”に変更しましょう。rename(columns={古い列名: 新しい列名})で変更できます。

df = df.rename(columns={"index": "Date"})
df
DateProdSale
010/01A00120
110/04B01011
210/05A0058

コメント

タイトルとURLをコピーしました