如何在Pandas中拆分含字符与数字的列以提取包装规格?
问题:拆分DataFrame中prod_name列的包装规格与产品名称
原始数据
Prod_nbr| prod_name 5 Natural chip companyseasalt175g 66 cC Nacho cheese 172g 61 Smiths Crinkle cut chips chicken135g
期望输出
Prod_nbr|pack|prod_name 5 175g Natural chip.... 66 172g cC Nacho cheese.. 61 135g Smiths Crinkle...
错误尝试代码
df['pack'] = df['prod_name'].str.extract(r'\d+\s*(\w{,5})\b').fillna('')[0]
正确实现方法
核心思路
- 提取
prod_name末尾的数字+单位组合作为pack列 - 移除
prod_name中的包装规格内容,保留纯产品名称
代码实现
# 提取包装规格:匹配字符串末尾的数字+字母组合 df['pack'] = df['prod_name'].str.extract(r'(\d+[a-zA-Z]+)$') # 清理产品名称:移除包装规格并去除多余空格 df['prod_name'] = df.apply(lambda row: row['prod_name'].replace(row['pack'], '').strip(), axis=1)
补充说明
- 正则
(\d+[a-zA-Z]+)$精准匹配末尾的数字+字母格式,适配示例中的175g/172g这类规格 - 如果你的数据中单位只有特定类型(比如仅g、kg、ml),可以把正则优化为
(\d+(?:g|kg|ml|l))$,进一步缩小匹配范围
内容的提问来源于stack exchange,提问作者Shenkez
相关产品推荐
相关产品推荐

