<Python, pandas> データフレーム文字列検索
ちと、教えてもらったので、メモメモ。
データフレームDataFrame
(正確にはシリーズSeries
)で、特定文字を検索する方法。
grep
だね。
In [5]: import pandas as pd In [8]: df = pd.DataFrame({ ...: 'a': ['a','b','c','d','e'], ...: 'b': ['f','g','h','i','j'], ...: 'c': ['k','l','m','n','l']}) In [9]: df Out[9]: a b c 0 a f k 1 b g l 2 c h m 3 d i n 4 e j l In [11]: df['a'].str.contains('b|c') Out[11]: 0 False 1 True 2 True 3 False 4 False Name: a, dtype: bool In [12]: df[ df['a'].str.contains('b|c')] Out[12]: a b c 1 b g l 2 c h m In [13]: df[ df['a'].str.contains('b')] Out[13]: a b c 1 b g l
Series.str.contains()
を使うらしい。
マニュアル。
pandas.Series.str.contains — pandas 0.17.0 documentation
追加。
query()
でもいける。
In [1]: df = pd.DataFrame({ ...: ...: 'a': ['a','b','c','d','e'], ...: ...: 'b': ['f','g','h','i','j'], ...: ...: 'c': ['k','l','m','n','l']}) In [2]: df Out[2]: a b c 0 a f k 1 b g l 2 c h m 3 d i n 4 e j l In [3]: df.query('a == "a" | b == "g"') Out[3]: a b c 0 a f k 1 b g l