Pandasの インデックス名の変更方法 について詳しく整理して解説します。
ここでいう「インデックス名」には大きく分けて2種類ある点を押さえると理解しやすいです。
目次
インデックス自体の「名前(ラベル)」を変更する方法
たとえば、行や列に付いているラベルを変えるケースです。
rename()
を使う方法
import pandas as pd
df = pd.DataFrame({
"A": [10, 20, 30],
"B": [40, 50, 60]
}, index=["one", "two", "three"])
print(df)
行インデックス(行ラベル)の変更
df = df.rename(index={"one": "first", "two": "second"})
print(df)
列インデックス(列ラベル)の変更
df = df.rename(columns={"A": "X", "B": "Y"})
print(df)
rename()
は辞書形式で指定でき、部分的な変更が可能です。
インデックス全体を置き換える方法
「一括で新しいインデックスに置き換えたい」場合。
直接代入する方法
df.index = ["row1", "row2", "row3"]
print(df)
df.columns = [...]
で列名も同様に一括変更可能。
インデックスの「名前(name属性)」を変更する方法
インデックスそのもの(ラベルの集合)には name 属性 を付けることができます。
これはデータ操作時に便利です。
行インデックスに名前を付ける
df.index.name = "id"
print(df)
列インデックスに名前を付ける
df.columns.name = "features"
print(df)
この「name」はラベルそのものではなく、インデックス集合に付ける説明ラベルです。
MultiIndex(階層インデックス)の場合
階層的なインデックスを使っているときは、names
属性でまとめて変更できます。
arrays = [
["A", "A", "B", "B"],
[1, 2, 1, 2]
]
multi_index = pd.MultiIndex.from_arrays(arrays, names=("letter", "number"))
df = pd.DataFrame({"value": [10, 20, 30, 40]}, index=multi_index)
print(df)
names
を変更
df.index.names = ["group", "subgroup"]
print(df)
MultiIndex では rename_axis()
もよく使われます。
まとめ
- 部分的にインデックスを変える →
rename(index=..., columns=...)
- 全体をまとめて変える →
df.index = [...]
やdf.columns = [...]
- インデックスそのものの「名前(属性名)」を付ける →
df.index.name
/df.columns.name
- MultiIndex の場合 →
df.index.names
やrename_axis()
以上、PythonのPandasのindex名の変更方法についてでした。
最後までお読みいただき、ありがとうございました。