如何用Python Pandas DataFrame从Excel列提取UK Pro后的产品编号
从Pandas DataFrame提取特定产品编号
问题背景
需要从DataFrame的Product列中提取位于**"UK Pro"之后的3-4位数字**作为产品编号,示例数据如下:
Checking center : King 2000 : UK Pro 1000 : London
Checking center : Queen 321 : UK Pro 250 : Spain
CC : UK Pro 3000 : France
CC : UK Pro 810 : Poland
期望输出产品编号列:1000、250、3000、810
用户尝试以下两种str.split方法未得到正确结果:
df['Product #'] = df1['Product'].str.split(':').str[1] df1['Product #'] = df1['Product'].str.split('UK Pro', 1).str[0].str.strip()
正确解决方案
方法1:正则表达式提取(推荐)
利用Pandas的str.extract方法结合正则表达式,精准匹配"UK Pro"后的3-4位数字,这是最稳定的方案:
import pandas as pd # 提取产品编号 df1['Product #'] = df1['Product'].str.extract(r'UK Pro\s+(\d{3,4})', expand=False)
正则表达式说明:
UK Pro:匹配固定标识字符串\s+:匹配"UK Pro"与编号之间的一个或多个空格(兼容空格数量不一致的情况)(\d{3,4}):捕获3到4位的数字,作为我们需要的产品编号
方法2:改进版split方法
如果倾向于使用split操作,需要调整分割逻辑:先按"UK Pro"分割取后半部分,再按冒号分割取前半部分,最后去除多余空格:
df1['Product #'] = df1['Product'].str.split('UK Pro', 1).str[1].str.split(':').str[0].str.strip()
内容的提问来源于stack exchange,提问作者SAK
相关产品推荐
相关产品推荐

