今回は pandas の DataFrame
オブジェクトから不要なカラムを取り除く方法について書く。
使った環境は次の通り。
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.3
BuildVersion: 17D102
$ python -V
Python 3.6.4
下準備
まずは環境に pandas をインストールしておく。
$ pip install pandas
続いてサンプルとなる DataFrame
を用意する。
今回は、次のようにユーザを模したデータを用意してみた。
>>> import pandas as pd >>> from datetime import date >>> columns = ['id', 'name', 'gender', 'birth', 'country'] >>> data = [ ... (1, 'Alice', 'F', date(1980, 1, 1), 'US'), ... (2, 'Bob', 'M', date(2000, 3, 3), 'UK'), ... (3, 'Carol', 'M', date(1990, 2, 2), 'AU'), ... ] >>> df = pd.DataFrame(data, columns=columns)
できあがった DataFrame
はこんな感じ。
>>> df id name gender birth country 0 1 Alice F 1980-01-01 US 1 2 Bob M 2000-03-03 UK 2 3 Carol M 1990-02-02 AU
非破壊的にカラムを取り除く
まずは非破壊的にカラムを取り除く方法から。
非破壊的というのは、元々の DataFrame
には変更を加えることがないということ。
つまり、特定のカラムを取り除いた新しい DataFrame
オブジェクトを取得することになる。
非破壊的にカラムを取り除くときは DataFrame#drop()
メソッドを用いる。
例えば country
カラムを取り除いてみよう。
>>> df.drop('country', axis=1) id name gender birth 0 1 Alice F 1980-01-01 1 2 Bob M 2000-03-03 2 3 Carol M 1990-02-02
うまくいった。
DataFrame#drop()
メソッドにはリストを渡して複数のカラム名を指定することもできる。
例えば country
と birth
という二つのカラムを取り除いてみよう。
>>> df.drop(['country', 'birth'], axis=1) id name gender 0 1 Alice F 1 2 Bob M 2 3 Carol M
ばっちり。
破壊的にカラムを取り除く
続いては破壊的にカラムを取り除く方法について。
破壊的ということは、つまり元々の DataFrame
オブジェクト自体が変更されるということ。
破壊的にカラムを削除するには次のようにする。
具体的には del
文で DataFrame
のカラムを指定すれば良い。
>>> del df['country']
確認すると、元々の DataFrame
オブジェクトからカラムが削除されていることが分かる。
>>> df id name gender birth 0 1 Alice F 1980-01-01 1 2 Bob M 2000-03-03 2 3 Carol M 1990-02-02
ちなみに、このやり方では複数のカラムを同時に削除することはできないようだ。
>>> del df[['birth', 'gender']] ... TypeError: '['birth', 'gender']' is an invalid key
いじょう。
めでたしめでたし。

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (19件) を見る

スマートPythonプログラミング: Pythonのより良い書き方を学ぶ
- 作者: もみじあめ
- 発売日: 2016/03/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る