【Python】Pandasデータフレームの列をインデックスに変換する(DataFrame.set_index)

Python

本記事では、PythonライブラリPandasの、データフレームの列をインデックスに変換する処理を紹介・解説します。難しいことはないので、コードを読んでサクッと次の処理へ進んでって下さい。

列→インデックス、インデックス→列の変換は、私のデータサイエンティストの経験上、ちょいちょい使う気がします。列になってると思っていたらインデックスだったとか、そういった類です。

該当コード

import pandas as pd

df = pd.read_csv('data.csv')

一番シンプルな基本形

df_index = df.set_index('indexにする列')

マルチインデックスにする場合

df_multi_index = df.set_index(['multi_indexにする列1','multi_indexにする列2'])

すでにあるインデックスに階層を追加してインデックスを追加する

df_append_index = df.set_index('multi_indexに追加する列', append=True)

インデックスに指定した列を残したい場合

df_drop_index = df.set_index('インデックスにしたいけど列としても残したい', drop=False)

解説

全体通してシンプルな処理です。set_indexで列名を指定するので直感にも反することがないので、書いていてもあまり詰まるところがないと思います。

列をインデックスにするだとか、インデックスを列にするだとかで混乱するとしたら、grouobyなどするとかなりごちゃついて、このset_indexやreser_indexを使うことが多いように思います。

インデックスとする列を残す処理で、drop=Falseがありますが、結構便利そうですね。これは私の実務では使ったことがないのですが、使うタイミングがあればぜひ使ってみようと思います。

参照サイト

pandas.DataFrameの列をインデックス(行名)に割り当てるset_index | note.nkmk.me
pandas.DataFrameのset_index()メソッドを使うと、既存の列をインデックスindex(行名、行ラベル)に割り当てることができる。インデックスに一意の名前を指定しておくと、locやatで要素を選択・抽出するとき分かりやすいので便利。pandas.DataFrame.set_index — panda...
pandas.DataFrame.set_index — pandas 2.1.4 documentation

まとめ

ということで、Pythonのデータフレームに関する処理で、データフレームの列をインデックスに変換する処理を紹介しました。

私のデータサイエンティスト実務の中でも、地味にこのコードを書くことも多く、ちょいちょい「あれ?」と思うことがあったので、自分への備忘録という意味合いも込めて記事にさせていただきました。

一人でも多くの方の参考になれば幸いです。

サイト内関連記事

データサイエンティストの書評ブログ
趣味が読書くらいしかない駆け出しデータサイエンティストの書評ブログです。日々の勉強のアウトプットや趣味の読書のおすすめをしていきます。

コメント

タイトルとURLをコピーしました