【问题标题】:Python Pandas - search for regex match in cells across all columnsPython Pandas - 在所有列的单元格中搜索正则表达式匹配
【发布时间】:2019-02-19 22:31:54
【问题描述】:
我已经看到了如何根据特定列中的匹配项过滤 pandas 数据框的示例。
我可以进一步扩展这个问题,而不是在特定列中搜索,我试图找到一种有效的方法来识别所有列中包含特定正则表达式匹配值的行......嵌套 for 循环效率太低 - 到了这一点将数据表转储到 csv 文件并对其进行 grepping 的速度更快。
必须有一种更高效的 pandas 原生方式来完成此任务?
谢谢!
【问题讨论】:
标签:
python
pandas
dataframe
search
【解决方案1】:
我将采用这篇文章中的现有示例,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