Pandas のデータフレームの特定の行・列を削除する

このページでは、Pandas で作成したデータフレームの特定の行 (レコード) 、列 (カラム) を除去・取り除く方法について紹介します。
なお、条件に基づいて特定の行や列を抽出する方法については、「Pandas でデータフレームから特定の行・列を取得する」もご覧ください。

特定の行を削除する

DataFrame.drop() メソッドを利用して、インデックスに基づいて特定の行の削除を行うことができます。リストを指定して、複数の行を一度に削除することもできます。

>>> import pandas as pd
>>> import numpy as np

>>> # データフレーム df を作成
>>> df = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'))
>>> df
          A         B         C         D
0  1.361879  1.189704  2.138577 -0.476125
1  0.299178 -1.452818 -1.147374 -2.332064
2 -0.612929 -1.677195  1.735829 -0.621198
3 -0.743785 -0.223876  0.198582 -0.126726
4  1.050872  0.252367 -0.579578  0.046591
5 -1.811098  1.753245  0.339837 -0.432238

>>> # 行 5 を削除
>>> df.drop(5)
          A         B         C         D
0  1.361879  1.189704  2.138577 -0.476125
1  0.299178 -1.452818 -1.147374 -2.332064
2 -0.612929 -1.677195  1.735829 -0.621198
3 -0.743785 -0.223876  0.198582 -0.126726
4  1.050872  0.252367 -0.579578  0.046591

>>> # 行 3 と 4 を削除
>>> df.drop([3,4])
          A         B         C         D
0  1.361879  1.189704  2.138577 -0.476125
1  0.299178 -1.452818 -1.147374 -2.332064
2 -0.612929 -1.677195  1.735829 -0.621198
5 -1.811098  1.753245  0.339837 -0.432238

特定の列を削除する

列の削除は行と同様に、DataFrame.drop() メソッドを利用しますが、引数に、axis=1 を指定し、列の削除であることを指定します。

>>> # 列 A を削除
>>> df.drop("A", axis=1)

          B         C         D
0  1.189704  2.138577 -0.476125
1 -1.452818 -1.147374 -2.332064
2 -1.677195  1.735829 -0.621198
3 -0.223876  0.198582 -0.126726
4  0.252367 -0.579578  0.046591
5  1.753245  0.339837 -0.432238

より簡単な方法として、Python の del ステートメントを利用する方法もあります。

>>> # 列 A を削除
>>> del df['A']
>>> df
          B         C         D
0  1.189704  2.138577 -0.476125
1 -1.452818 -1.147374 -2.332064
2 -1.677195  1.735829 -0.621198
3 -0.223876  0.198582 -0.126726
4  0.252367 -0.579578  0.046591
5  1.753245  0.339837 -0.432238

参考: pandas.DataFrame.drop — pandas 0.17.0 documentation