pandas備忘録(列削除、行削除)
行や列の削除をpandasでやっていきます。
列削除
変数名を指定する方法と列番号を指定する方法があります。
方法1:変数名を指定
dm_ae3=dm_ae2.drop("被験者番号", axis=1)
dm_ae3
列削除の時は、axis=1とします。
複数列を削除するにはlistで指定をします。
dm_ae4=dm_ae2.drop(["被験者番号","smoke"], axis=1)
dm_ae4
方法2:列番号を指定
データフレームのcolumnsを使って削除します。
dm_ae5=dm_ae2.drop(dm_ae2.columns[[3,6]], axis=1)
dm_ae5
番号よりは変数名を指定した方がプログラムの可視性は高くなります。
行削除
行削除にはindexを使います。
なので、indexについて少し詳しくみていきます。いわゆる主キーですね。
特にIndexを指定せずにdataframeを作ると自動的に整数が連番されます。
では、明示的にsubjidをindexに指定します。その場合はset_indexを使います。
dm2.set_index("subjid")
こうすると下の例のように、subjidが下にさがってindexとして指定されたことがわかります。
しかし、これは元のdataframeには反映されていません。反映させるにはinplace=Trueを指定します。
dm2.set_index("subjid",inplace=True)
dm2
これで元のdataframeのindexがsubjidになりました。なお、複数の変数をindexキーとする場合は、dm2.set_index(["subjid", "gender"],inplace=True)のようにlist化すればよいです。
ちなみに一度指定したindexを解除する場合は、reset_indexを使います。これで連番に戻ります。
dm2.reset_index
dm2
(このときにdrop=Trueとするとその前までindexだったsubjidが落ちてしまいますので注意しましょう。)
ではsubjectをindexに指定した状態で行削除をしましょう。
dm3=dm2.drop(index=101,axis=0)
dm3
複数行を削除する場合はlist化します。
dm4=dm2.drop(index=[101,104],axis=0)
dm4