【Python覚書】pandasの二項演算子(eq,ne,le,lt,ge,gtメソッド)

binary operator pandas

pandasのデータフレームで、条件を指定してのデータ抽出です。
二項演算子にpandas.DataFrameのメソッドが使われることがあるので、記号とメソッドの対応表を作成します。

メソッド(pandas.DataFrame.gt())

pandas.DataFrame.gt(self, other, axis=’columns’, level=None)

パラメーター入力値
other値やリスト
axisindex又はcolumns、デフォルトは「columns」
levelint又はラベル

返り値は、ブールのデータフレームです。

上記は、例としてgt()を取り上げています。
pandas.DataFrame.メソッド()は、以下の対応表のとおり。

対応表

記号メソッド英語表記
==eqequal
!=nenot equal
<=leless than or equal to
<ltless than
>=gegreater than or equal to
>gtgreater 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

まとめ

  • 二項演算子を記号とメソッドで記述できた

正直なところ二項演算子をメソッドで記述するメリットがわかりませんが、とあるサンプルコードが見慣れないメソッドを使用していたのでメモとして残します。

関連情報

公式ドキュメントに、各記号へのリンクがあります。

タイトルとURLをコピーしました