如何在DataFrame列中通过正则表达式匹配指定字符串?
解决方案
可以通过以下步骤实现需求:
- 导入所需库
import pandas as pd import re
- 构建示例DataFrame和目标字符串
# 构造DataFrame data = { 'name': ['123 Main Street', '123 Middle Street'], 'regex': [r'\d+\s*main\s*st(reet)?', r'\d+\s*middle\s*st(reet)?'] } df = pd.DataFrame(data) # 目标字符串 mystring = 'abc xy 123 main st'
- 筛选匹配的行
这里提供两种直观的实现方法:
方法一:用apply结合re.search逐行校验
# 筛选正则能匹配目标字符串的行,flags=re.IGNORECASE可选,用于忽略大小写匹配 matched_df = df[df['regex'].apply(lambda x: bool(re.search(x, mystring, flags=re.IGNORECASE)))]
方法二:用apply按行处理(逻辑更直白)
matched_df = df[df.apply(lambda row: re.search(row['regex'], mystring) is not None, axis=1)]
- 查看结果
print(matched_df)
输出结果符合预期:
name regex 0 123 Main Street \d+\s*main\s*st(reet)?
注:如果需要忽略大小写匹配,保留flags=re.IGNORECASE参数即可;无需忽略则直接移除该参数。
内容的提问来源于stack exchange,提问作者Rafiqul Islam
相关产品推荐
相关产品推荐

