読者です 読者をやめる 読者になる 読者になる

<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