前問では、set_index()
で列をインデックスに変換しました。
これとは逆に、インデックスを列に変換するにはreset_index()
を使います。
変数df
の内容を下記とします。インデックスは、10/01
、10/04
、10/05
です。
Date | Prod | Sale |
---|---|---|
10/01 | A001 | 20 |
10/04 | B010 | 11 |
10/05 | A005 | 8 |
df.reset_index(inplace=True)
とすると、df
は下記のように変わります。
Date | Prod | Sale | |
---|---|---|---|
0 | 10/01 | A001 | 20 |
1 | 10/04 | B010 | 11 |
2 | 10/05 | A005 | 8 |
新しいインデックスは、0から始まる通し番号で作成されます。
演習
製品ごとの売上記録のDataFrameを作成します。インデックスの名前は、引数name
を使って”Date”と指定します。
import pandas as pd
df = pd.DataFrame(
[
["A001", 20],
["B010", 11],
["A005", 8],
],
# indexにIndexオブジェクトを設定する
index=pd.Index(["10/01", "10/04", "10/05"], name="Date"),
columns=["Prod", "Sale"]
)
df
Prod | Sale | |
---|---|---|
Date | ||
10/01 | A001 | 20 |
10/04 | B010 | 11 |
10/05 | A005 | 8 |
インデックスを列Date
に変換します。inplace=True
があるのでdf
が変更されます。df.reset_index(inplace=True)
は何も返しません。
df.reset_index(inplace=True)
df
を確認しましょう。インデックスが列Date
に変わりました。このように、インデックスから変換された列の列名は、このインデックスの名前が使われます。もし、インデックスが無名であれば、列名はindex
になります。
df
Date | Prod | Sale | |
---|---|---|---|
0 | 10/01 | A001 | 20 |
1 | 10/04 | B010 | 11 |
2 | 10/05 | A005 | 8 |
set_index()
同様、下記のようにオプションinplace
の違いで動作が変わります。
df.reset_index(inplace=True)
:写経のように、この式は何も返しません。df
自体が変更されます。df.reset_index()
:下記のように、変更したDataFrameを返します。df
自体は変更されません。
inplace
というオプションは、pandasのいろいろなメソッドで使えます。
デフォルト値はFalseで「新しいオブジェクトを作成して返す」という指定です。
元の変数を変更したいときは、inplace=True
を使います。
コメント