PythonのPandasのindex名の変更方法について

Python,イメージ

AI実装検定のご案内

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.namesrename_axis()

以上、PythonのPandasのindex名の変更方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次