Python Pandas-在所有列的单元格中搜索正则表达式匹配

时间:2019-02-19 22:31:55

标签: python pandas dataframe search

我看到了一些示例,这些示例说明了如何根据特定列中的匹配来过滤熊猫数据框。 我可以进一步扩展这个问题吗,而不是在特定的列中进行搜索,我试图找到一种有效的方法来识别所有列中包含特定正则表达式匹配值的行...嵌套for循环的效率太低-将数据表转储到csv文件并进行grepping的速度更快。

熊猫必须有一种更有效的原生方式来实现这一目标吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我将以这篇Select rows from a DataFrame based on values in a column in pandas帖子中的现有示例为例:

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
                   'B': 'one one two three two two one three'.split(),
                   'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
#      A      B  C   D
# 0  foo    one  0   0
# 1  bar    one  1   2
# 2  foo    two  2   4
# 3  bar  three  3   6
# 4  foo    two  4   8
# 5  bar    two  5  10
# 6  foo    one  6  12
# 7  foo  three  7  14

现在给定以上数据集,我正在寻找一种有效的方法来从正则表达式上匹配的任何列中返回包含值的所有行。

例如

a search on '1[2,4]|three' should return

3  bar  three  3   6
6  foo    one  6  12
7  foo  three  7  14