これまでの問題で学んだように、reset_index()
を使ってインデックスを列に変換した場合、列名には元のインデックスの名前が使用されます。インデックスが無名の場合は、変換後の列名はindex
になります。
そのため、名前のないインデックスを列に変換する時は、次の2ステップで行います。
reset_index()
を使ってインデックスを列に変換するrename()
を使って、列名をindex
から別の名前に変更する
具体的な例を見てみましょう。
下記を元のDataFramedf
とします。左上が空欄なので、インデックスの名前(df.index.name
)はNoneです。
Prod | Sale | |
---|---|---|
10/01 | A001 | 20 |
10/04 | B010 | 11 |
10/05 | A005 | 8 |
これまで学んだようにreset_index()
を使うと、インデックスを列に変換できます。このとき、列名はデフォルト値であるindex
という名前になります
df = df.reset_index()
df
index | Prod | Sale | |
---|---|---|---|
0 | 10/01 | A001 | 20 |
1 | 10/04 | B010 | 11 |
2 | 10/05 | A005 | 8 |
このindex
をDate
に変えるには、前問で学んだようにrename()
を使います。
df = df.rename(columns={"index": "Date"})
df
Date | Prod | Sale | |
---|---|---|---|
0 | 10/01 | A001 | 20 |
1 | 10/04 | B010 | 11 |
2 | 10/05 | A005 | 8 |
演習
import pandas as pd
df = pd.DataFrame(
[
["A001", 20],
["B010", 11],
["A005", 8],
],
index=["10/01", "10/04", "10/05"],
columns=["Prod", "Sale"]
)
df
Prod | Sale | |
---|---|---|
10/01 | A001 | 20 |
10/04 | B010 | 11 |
10/05 | A005 | 8 |
最初に、reset_index()
でインデックスを列に変換します。名前のないインデックスを列に変換するとindex
という列名になります。
df = df.reset_index()
df
index | Prod | Sale | |
---|---|---|---|
0 | 10/01 | A001 | 20 |
1 | 10/04 | B010 | 11 |
2 | 10/05 | A005 | 8 |
列index
の名前を”Date”に変更しましょう。rename(columns={古い列名: 新しい列名})
で変更できます。
df = df.rename(columns={"index": "Date"})
df
Date | Prod | Sale | |
---|---|---|---|
0 | 10/01 | A001 | 20 |
1 | 10/04 | B010 | 11 |
2 | 10/05 | A005 | 8 |
コメント