如何将Google Sheets的REGEXEXTRACT公式转换为Pandas或re实现的Python代码
Google Sheets REGEXEXTRACT功能的Python实现方案
你需要的匹配规则是提取「连续大写字母+横杠+连续数字」的组合,直接使用Pandas内置的str.extract方法即可实现和Google Sheets完全一致的整列提取效果,该方法原生适配DataFrame列的矢量化操作,无需额外遍历。
正确实现代码
方案1:Pandas原生实现(优先推荐,性能最优)
import pandas as pd # 正则规则和你Google Sheets中使用的完全一致 # expand=False 控制返回Series格式,可直接赋值给新列 df["newcol"] = df["oldcol"].str.extract(r'([A-Z]+\-[0-9]+)', expand=False)
方案2:使用re库实现
如果需要自定义更复杂的匹配逻辑,可以配合apply调用re库实现:
import pandas as pd import re def regex_extract(text): # 匹配目标规则 match_result = re.search(r'([A-Z]+\-[0-9]+)', str(text)) # 匹配成功返回结果,失败返回空值 return match_result.group(1) if match_result else None df["newcol"] = df["oldcol"].apply(regex_extract)
原有代码报错原因
- 误用了
re.sub方法:该方法是正则替换功能,不是提取功能,和你需要的REGEXEXTRACT逻辑不匹配 - 正则表达式没有用引号包裹,也没有加raw字符串标识
r,会触发语法错误和转义异常 - 没有适配Pandas列的调用规则:不能直接对Series对象调用re库的方法,需要用Pandas内置的str类方法,或者通过apply包裹调用
内容的提问来源于stack exchange,提问作者msulol
相关产品推荐
相关产品推荐

