相关疑难解决方法(0)

如何通过正则表达式过滤pandas中的行

我想在其中一列上使用正则表达式干净地过滤数据帧.

对于一个人为的例子:

In [210]: foo = pd.DataFrame({'a' : [1,2,3,4], 'b' : ['hi', 'foo', 'fat', 'cat']})
In [211]: foo
Out[211]: 
   a    b
0  1   hi
1  2  foo
2  3  fat
3  4  cat
Run Code Online (Sandbox Code Playgroud)

我想将行过滤为f使用正则表达式开头的行.先去:

In [213]: foo.b.str.match('f.*')
Out[213]: 
0    []
1    ()
2    ()
3    []
Run Code Online (Sandbox Code Playgroud)

这不是太有用了.但是这会得到我的布尔索引:

In [226]: foo.b.str.match('(f.*)').str.len() > 0
Out[226]: 
0    False
1     True
2     True
3    False
Name: b
Run Code Online (Sandbox Code Playgroud)

所以我可以通过以下方式来限制:

In [229]: foo[foo.b.str.match('(f.*)').str.len() > 0]
Out[229]: 
   a    b
1  2  foo
2  3  fat …
Run Code Online (Sandbox Code Playgroud)

python regex pandas

144
推荐指数
7
解决办法
13万
查看次数

标签 统计

pandas ×1

python ×1

regex ×1