<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()
は正規表現できるらしい。。。
stackoverflowのここで教えてもらった。
DataFrame.apply()
とDataFrame.applymap()
の違いは、非常にお世話になっているここ。
sinhrks.hatenablog.com