如何从DataFrame中提取仅含kg、g、lb重量单位的子串
Pandas 提取文本列重量子串实现方案
直接用Pandas字符串方法搭配正则提取即可实现需求,无匹配内容的行自动返回NaN,和期望输出完全对齐。
- 正则编写注意点:长度更长的单位
kg、lb要放在g前面匹配,避免把kg中的单个g误识别为独立重量单位 - 兼容整数、小数两类重量数值,同时适配数字和单位间存在空格的不规范标注场景
完整代码
import pandas as pd # 构造测试数据集(已修正原输入样例中字符串未闭合的语法错误) df = pd.DataFrame({ 'fruits': ['Apple 12kg Fresh', '13g Orange', 'Fresh berries 1g', 'strawberry', 'kiwi 3.2lb'] }) # 正则匹配提取「数值+重量单位」片段 df['fruits'] = df['fruits'].str.extract(r'(\d+\.?\d*\s*(?:kg|lb|g))') print(df)
运行输出
fruits 0 12kg 1 13g 2 1g 3 NaN 4 3.2lb
如果需要更严谨的匹配规则,避免误匹配g开头的其他词汇,可以在正则末尾增加单词边界符,修改为r'(\d+\.?\d*\s*(?:kg|lb|g)\b)'即可。
内容的提问来源于stack exchange,提问作者ugalmzze
相关产品推荐
相关产品推荐

