2016-03-31 1 views
1

は、私はこのコードを持っているとします正規表現に基づいてpandasデータセットから行を選択する方法は?

import pandas as pd 
import re 

indexes = [1, 7, 12, 13, 21] 
strings = ["a1", "y1", "n1", "d2", "s3"] 
doubles = [1.2, 23.09, 6.034, 3.91, 5.2] 
d = {"strings": strings, "doubles": doubles} 

df = pd.DataFrame(d, index=indexes) 

これはパンダのデータフレームを作成します。

doubles strings 
1 1.200 'a1' 
7 23.090 'y1' 
12 6.034 'n1' 
13 3.910 'd2' 
27 5.2  's3' 

私は「string」は列に適用される正規表現に基づいて、このデータフレームから行を選択します。これまで私は解決策を見つけました:

df[df.strings.str.findall('[0-2]$').str.len() > 0] 

私の質問は、これを行うよりエレガントな方法はありますか? 試しました

df[df.strings.filter('[0-2]$') ...] 

ですが、エラーが発生しました。

答えて

1

あなたはstr.containsを使用し、同じ正規表現パターンを使用することができます

In [111]: 
df[df['strings'].str.contains('[0-2]$', regex=True)] 

Out[111]: 
    doubles strings 
1  1.200  a1 
7 23.090  y1 
12 6.034  n1 
13 3.910  d2 
関連する問題