假设我有这段代码:
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)
所以这会创建pandas DataFrame:
doubles strings
1 1.200 'a1'
7 23.090 'y1'
12 6.034 'n1'
13 3.910 'd2'
27 5.2 's3'
我想根据应用于'string'列的正则表达式从此DataFrame中选择行。到目前为止,我找到了一个解决方案:
df[df.strings.str.findall('[0-2]$').str.len() > 0]
我的问题是:有更优雅的方式吗? 我试过了
df[df.strings.filter('[0-2]$') ...]
但我只有错误。
答案 0 :(得分: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