Pandasを触ってる時に、おいおいちょっと待てよという挙動をすることが多いのがindexまわり。 備忘としてまとめました。
set_index,reset_index
既にあるカラムをindex化したり、現在のindexをカラムにうつします。 非破壊なので新しいものを残したい時は新しい変数につっこみます。
import pandas as pd df = pd.DataFrame( { "a":[1,2,3,4], "b":5 }, index = ['a','b','c','d'] ) #['a','b','c','d']をカラムに。カラム名はnameから取得。 df.reset_index() #a列をindexに df.set_index('a') #そのまま df
groupbyやconcatの際
加工処理をするとindexの中が勝手に変わったり変な値が入ったりするので、そのあたりを操作します。
#groupbyで勝手にindex化するのを防ぐ df.groupby('a',as_index=False).mean() #pivot_tableはないのでreset_indexを #df.pivot_table(...).reset_index() #concatするときにindexを振り直す pd.concat([df,df],ignore_index=True)
並べ替え
昇降制御やnaのいち(ほぼないけど)なんかを制御して、indexで並び替えます。
sort_values
とは別に存在している。
df.sort_index( ascending=True, na_position='last', ignore_index=True, #整列後、新しい値をふる key = lambda x : ...#indexの値を加工して並べ替える )