前問では、reset_index()
で「名前のあるインデックスを列に」変換しました。
しかし、インデックスには名前がついていないこともあります。
次問では、「名前のないインデックスを列に」変換する方法を学びます。
「名前のないインデックスを列から変換された列」の列名はindex
になります。このままでは、分析などでわかりにくいです。そのため、列名を別の名前に変えた方が良いでしょう。これ以外にも、データ処理をしていると、列名を変えて扱いやすくしたい場面が多々あります。
列名を変えるには、下記のようにします。
df.rename(columns={古い列名: 新しい列名})
このメソッドは、列名を変更した新しいDataFrameを返します。
※ set_index()
やreset_index()
同様、rename()
でも引数inplace
が使えます。inplace=True
を指定するとDataFrameそのものを変更し、指定しないと元のDataFrameは変更せず新しいDataFrameを取得します。
演習
import pandas as pd
df = pd.DataFrame(
[
["10/01", "A001", 20],
["10/04", "B010", 11],
["10/05", "A005", 8],
],
columns=["Some", "Prod", "Sale"]
)
df
Some | Prod | Sale | |
---|---|---|---|
0 | 10/01 | A001 | 20 |
1 | 10/04 | B010 | 11 |
2 | 10/05 | A005 | 8 |
“Some”という列名を”Date”に変えます。
df = df.rename(columns={"Some": "Date"})
df
Date | Prod | Sale | |
---|---|---|---|
0 | 10/01 | A001 | 20 |
1 | 10/04 | B010 | 11 |
2 | 10/05 | A005 | 8 |
- 列名を変更したDataFrameは、
df.rename(columns={古い列名: 新しい列名})
で取得できます。 inplace=True
を指定すると、df
そのものを変更します。
rename(index=...)
を使うと、行名の変更もできます。
たとえば、下記のようにすると、2行目の行名を1
から100
に変更した新しいDataFrameを返します。
df.rename(index={1: 100})
index | Prod | Sale | |
---|---|---|---|
0 | 10/01 | A001 | 20 |
100 | 10/04 | B010 | 11 |
2 | 10/05 | A005 | 8 |
コメント