如何从Pandas列中提取符合指定规则的首个连续数字序列
解决方案
可以通过Pandas的str.extract()结合正则表达式实现需求,直接用一行代码完成数据清洗:
df['col'] = df['col'].str.extract(r'(?i)(?:nbu\D*)?(\d+)', expand=False)
正则表达式说明
(?i):启用不区分大小写匹配,能识别NBU/nbu/NbU等任意大小写组合形式(?:nbu\D*)?:非捕获可选组,匹配nbu后跟随的任意数量非数字字符(空格、-、/等都包含在内),?保证没有nbu时该组会被忽略(\d+):捕获组,匹配并提取第一个连续数字序列,这就是最终需要的结果
测试示例
import pandas as pd # 构造测试数据 data = { 'col': [ 'nbu 123456', 'NBU-123456', 'nbu/ 123456 blah12', '123456', '123456_123', 'nbu12 3455' ] } df = pd.DataFrame(data) # 执行提取 df['extracted_num'] = df['col'].str.extract(r'(?i)(?:nbu\D*)?(\d+)', expand=False) print(df)
输出结果:
col extracted_num 0 nbu 123456 123456 1 NBU-123456 123456 2 nbu/ 123456 blah12 123456 3 123456 123456 4 123456_123 123456 5 nbu12 3455 12
内容的提问来源于stack exchange,提问作者Lee Murray
相关产品推荐
相关产品推荐

