Pandasの行や列の削除 drop関数とdel文

Pandasで作成した行列で特定の行や列を削除するにはdrop関数を使います。

drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=’raise’)

Parameters
———-
labels : single label or list-like
Index or column labels to drop.
axis : {0 or ‘index’, 1 or ‘columns’}, default 0
Whether to drop labels from the index (0 or ‘index’) or
columns (1 or ‘columns’).
index : single label or list-like
Alternative to specifying axis (“labels, axis=0“
is equivalent to “index=labels“).

.. versionadded:: 0.21.0
columns : single label or list-like
Alternative to specifying axis (“labels, axis=1“
is equivalent to “columns=labels“).

.. versionadded:: 0.21.0
level : int or level name, optional
For MultiIndex, level from which the labels will be removed.
inplace : bool, default False
If True, do operation inplace and return None.
errors : {‘ignore’, ‘raise’}, default ‘raise’
If ‘ignore’, suppress error and only existing labels are
dropped.

Returns
——-
DataFrame
DataFrame without the removed index or column labels.

例 Pandas DataFrameを作成します。

data = {'name':['Nakajima','Hanazawa','Hama','Isono'],
          'id':[1,2,3,4],
          'age':[48,30,28,51],
          'weight':[60,78,64,58],
          'height':[168,173,162,172]}
data_f1 = pd.DataFrame(data)
data_f1

結果

  name id age weight height
0 Nakajima 1 48 60 168
1 Hanazawa 2 30 78 173
2 Hama 3 28 64 162
3 Isono 4 51 58 172

Pandasのdrop関数

drop関数の削除処理はインプレースではありません。
本当に削除したいときは、第3引数に inplace=True を追加します。

data_f1.drop(['height'],axis=1)

結果

  name id age weight
0 Nakajima 1 48 60
1 Hanazawa 2 30 78
2 Hama 3 28 64
3 Isono 4 51 58

もう一度元の変数を呼び出すとデータは削除されていません。

data_f1

結果

  name id age weight height
0 Nakajima 1 48 60 168
1 Hanazawa 2 30 78 173
2 Hama 3 28 64 162
3 Isono 4 51 58 172

Pythonのdel文

del文はPythonのリストの要素を削除する仕組み。こちらは本当に削除します。

del data_f1['height']
data_f1

結果

  name id age
0 Nakajima 1 48
1 Hanazawa 2 30
2 Hama 3 28
3 Isono 4 51