英国でデータサイエンスを学ぶ

30代になってから海外で統計学・機械学習・プログラミングを勉強

MENU

Python pandas series でインデックスの消去

PandasでSeries を使用していて、インデックスが邪魔になった時の消し方について備忘メモです。


なぜこのような備忘メモが必要になったかというと、Pandasのデータフレームを利用していて、そこから一部抜粋したSeriesを作成するとインデックスが元のデータフレームから引き継がれてしまうので、それを避けたかったというのがあります。

例えば、

import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(25).reshape(5,5))

こんな感じでdfを作ると以下のようなものが出来上がります

0 1 2 3 4
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
3 15 16 17 18 19
4 20 21 22 23 24
ここから、例えば4列目(列名だと"3")の3,4,5行目(行名だと2,3,4)を取り出して、Seriesとしてオブジェクトをつくると

ser1 = df.iloc[2:5,3]

となるわけですが、これはindexが2,3,4となったSeriesになってしまいます。
これでは、結合するときなどにズレが生じてしまうので(結合の仕方を工夫すればいいのかもしれませんが)、インデックスを落とすためには、

ser1 = ser1.reset_index(drop=True)

と実行してやる必要があります。

同じように、元のSeriesを変更するには、

ser1.reset_index(drop=True, inplace = True)

としてやれば問題ありません。