LoginSignup
17
17

More than 5 years have passed since last update.

Pandas.DataFrameのインデックスを振り直す方法 | 備忘録

Last updated at Posted at 2018-08-04

pandasでDataFrameを加工しているとindexを振り直す必要に出くわします。indexが定義されてないとかで怒られたり、またはテーブルの形がイビツになっていたり。index再設定のための備忘録です。

ライブラリとデータの準備

numpyの乱数処理で適当な値をDataFrameに入れる。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(low=0, high=10, size=(5, 5)), columns=['data1', 'data2', 'data3', 'data4', 'data5'])

スクリーンショット 2018-08-04 14.44.18.png

別のcolumnをindexに指定する方法

このデータだとあまり違和感はないですが、csvから適当にreadしたデータだとkeycodeとなる値がindexではなく一つのcolumnとして入ってしまいます。そんな列を明示的にindexとして扱いたい場合には、set_index()を使います。

df.set_index("data1")

スクリーンショット 2018-08-04 14.44.10.png

すると、set_index()で指定したcolumnをindexとして定義し直したDataFrameを作成することが可能になります。
ただし、indexとして指定する列が一意かには注意が必要です。今回指定したdata1はそうではないため、index番号を呼び出してみると、以下のように複数のレコードが呼ばれてしまいます。

df.set_index("data1").loc[7,:]

スクリーンショット 2018-08-04 14.44.24.png

indexを0から振り直す方法

reset_index()を使えば良い。この場合には、これまでのindexが"index"という新しいcolumnとしてDataFrme内に加わることになる。

df.reset_index()

スクリーンショット 2018-08-04 14.44.30.png

indexを1から振り直す方法

0からではなく1始まりのindexが欲しい時。例えば、DataFrameをキャプチャした結果をパワポに貼りたい時など。
他にも色々方法があるようですが(https://stackoverflow.com/questions/20167930/start-index-at-1-when-writing-pandas-dataframe-to-csv
)、以下の方法が最も簡単で忘れにくそうだなと感じました。

df.index = df.index + 1

indexといえども一つのobjectですので、単に1足す作業をするだけす。ただし、indexが数値として定義されている必要があります。reset_index()で作ったidnexなら良いですが、set_index()である列をindexに設定していた場合などは、その新しいindexが数値であるかをきにする必要があります。

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17