pandasのデータフレームで、条件を指定してのデータ抽出です。
二項演算子にpandas.DataFrameのメソッドが使われることがあるので、記号とメソッドの対応表を作成します。
メソッド(pandas.DataFrame.gt())
pandas.DataFrame.gt(self, other, axis=’columns’, level=None)
パラメーター | 入力値 |
other | 値やリスト |
axis | index又はcolumns、デフォルトは「columns」 |
level | int又はラベル |
返り値は、ブールのデータフレームです。
上記は、例としてgt()を取り上げています。
pandas.DataFrame.メソッド()は、以下の対応表のとおり。
対応表
記号 | メソッド | 英語表記 |
== | eq | equal |
!= | ne | not equal |
<= | le | less than or equal to |
< | lt | less than |
>= | ge | greater than or equal to |
> | gt | greater than |
サンプルコード
サンプルデータの作成
5行2列のデータを作成します。
列名「abc」が文字列、列名「num」が整数です。
import pandas as pd
data_abc = ['a', 'b', 'c', 'd', 'e']
data_123 = [1, 2, 3, 4, 5]
sample = pd.DataFrame({'abc': data_abc, 'num':data_123})
sample
abc num
0 a 1
1 b 2
2 c 3
3 d 4
4 e 5
使用例
各要素が「2」であるか判定してみます。
記号を使用します。
sample == 2
abc num
0 False False
1 False True
2 False False
3 False False
4 False False
要素の値が「2」の、列名「num」行名「1」のみがTrueとなっています。
メソッドを使用します。
sample.eq(2)
abc num
0 False False
1 False True
2 False False
3 False False
4 False False
記号と同じ結果になりました。
次は、Booleanインデックスを使用した抽出を行います。
列名「abc」が「b」ではないデータを抽出します。
記号を使用 します。
sample[sample['abc']!='b']
abc num
0 a 1
2 c 3
3 d 4
4 e 5
メソッドを使用します。
sample[sample['abc'].ne('b')]
abc num
0 a 1
2 c 3
3 d 4
4 e 5
まとめ
- 二項演算子を記号とメソッドで記述できた
正直なところ二項演算子をメソッドで記述するメリットがわかりませんが、とあるサンプルコードが見慣れないメソッドを使用していたのでメモとして残します。
関連情報
公式ドキュメントに、各記号へのリンクがあります。