<Python, pandas, regexp> 各要素に対して正規表現で検索かける。

DataFrameの各要素elementに対して正規表現regexpで検索かける方法。
DataFrame.applymap()を使う。

In [1]: df = pd.DataFrame({
   ...:         'a':['hage', 'hoge', 'hige'],
   ...:         'b':['null', 'hige', 'hage'],
   ...:         'c':['fugu', 'fuga', 'fugo']})
In [2]: import re

In [6]: df.applymap(lambda x: bool(re.search('hage', x)))
Out[6]:
       a      b      c
0   True  False  False
1  False  False  False
2  False   True  False

In [7]: df.applymap(lambda x: bool(re.search('hige', x)))
Out[7]:
       a      b      c
0  False  False  False
1  False   True  False
2   True  False  False

In [8]: df.applymap(lambda x: bool(re.search('hi..', x)))
Out[8]:
       a      b      c
0  False  False  False
1  False   True  False
2   True  False  False

いいねー。   Series.str.contains()DataFrame.query()だと正規表現が使えないから、こっちの方がよさげ。

訂正、、、Series.str.contains()正規表現できるらしい。。。

nekoyukimmm.hatenablog.com

stackoverflowのここで教えてもらった。

stackoverflow.com

DataFrame.apply()DataFrame.applymap()の違いは、非常にお世話になっているここ。
sinhrks.hatenablog.com