PythonのPandasのset_index関数について

Python,イメージ

AI実装検定のご案内

Pandasのset_index関数は、DataFrameのインデックス(行ラベル)を指定した列に置き換えるための関数です。

これを理解して活用すると、データ処理や検索が効率的になり、グループ化や結合処理にも大きく役立ちます。以下で、詳しく解説します。

目次

基本構文

DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)

※このコード単体では、出力はできません。

主な引数

  • keys
    インデックスに設定する列名、または列名のリスト。
    例: "column_name" または ["col1", "col2"]
  • drop (デフォルト: True)
    インデックスに設定した列をDataFrame本体から削除するかどうか。
  • True → インデックスに設定した列は削除される
  • False → 元の列を残したままインデックス化される
  • append (デフォルト: False)
    既存のインデックスに加えて、新しい列を追加でインデックスにするかどうか。
  • True → 現在のインデックスに列を追加してMultiIndexにする
  • False → 現在のインデックスを置き換える
  • inplace (デフォルト: False)
    新しいDataFrameを返すか、その場で変更するか。
  • True → 元のDataFrameを直接変更
  • False → 新しいDataFrameを返す
  • verify_integrity (デフォルト: False)
    インデックスに重複がないかを検証する。
  • True → 重複があるとエラー
  • False → 重複を許容(一般的にはこちら)

基本的な使い方

import pandas as pd

df = pd.DataFrame({
    "id": [101, 102, 103],
    "name": ["Alice", "Bob", "Charlie"],
    "score": [85, 90, 95]
})

print(df)

例1: 単一列をインデックスにする

df_indexed = df.set_index("id")
print(df_indexed)

id列がインデックスとして利用される。

例2: drop=False で元の列を残す

df_indexed = df.set_index("id", drop=False)
print(df_indexed)

→ インデックスとしても使え、列としても保持できる。

例3: 複数列をインデックスにする

df_multi = df.set_index(["id", "name"])
print(df_multi)

→ MultiIndex(階層的インデックス)が設定される。

例4: append=True で既存のインデックスに追加する

df_append = df.set_index("id", append=True)
print(df_append)

→ もともとの「行番号」インデックスに「id」が追加され、二重インデックスになる。

reset_index との関係

set_indexでインデックスに変えた列は、reset_indexで元に戻せます。

df_indexed = df.set_index("id")
df_reset = df_indexed.reset_index()
print(df_reset)

→ 元の形に戻る。

よくある活用シーン

検索を効率化する

  • IDやユニークキーをインデックスにすることで loc による高速アクセスが可能。
print(df_indexed.loc[102])

データの整形

  • 複数の属性(例: 年+月)をインデックスにすると、時系列やグループ分析がしやすい。

結合(merge/join)前処理

  • set_indexでキーを設定してからjoinを使うと直感的に結合できる。

注意点

  • 重複がある列をインデックスにすると、検索時に複数行が返る
  • verify_integrity=True を使えばエラーを出せるが、パフォーマンスは落ちる
  • inplace=Trueを乱用すると、元データが失われるのでおすすめしない(可読性低下)

まとめ

  • set_indexは「列を行ラベル(インデックス)」に変換するための関数
  • よく使うオプションは drop, append
  • 検索、集計、結合の前処理にとても便利
  • reset_indexとセットで使うことが多い

以上、PythonのPandasのset_index関数についてでした。

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

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