You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中提取特定字符串关联数字并精简代码?

解决方案:从Pandas文本字段提取指定数字

需求说明

需要从DataFrame的description字段中提取两类数字:

  • 所有位于шт、мл之前的数字(支持无空格如100шт、带空格+逗号小数如6,4 кг等格式)
  • 仅保留вес:之后对应кг前的数字(排除其他位置的кг相关数字)

实现代码

import pandas as pd
import re

# 原始DataFrame
df = pd.DataFrame(
    columns=["description"],
    data=[
        [
            "пластилин скульптурный гамма , торг.марк-гамма. производитель-ооо  россия. всего: по 1 кг, 100шт. в 20 кор. - вес: 96,9 кг 20 кор.на.поддоне 000 1 02"
        ],
        [
            "ел текстильныйtextile chalk, 3500 шт - вес: 6,4 кг, ; 2)1 коробки, ; 3) № конт.:dryu9183029, кол-во:1;"
        ],
        [
            "арт. 049231; точилка для карандашей (connect pastel 2h)pencil sharpener connect pastel 2h - 3200 шт.; произв.: good rise precision - вес: 114 кг, ; 2)10 коробок, ; 3) № конт.:mofu0672448(часть), кол-во:1;"
        ],
        [
            "пластилин скульптурный гамма , торг.марк-гамма. производитель-ооо россия. всего: по 1 кг, 100шт. в 20 кор. - вес: 96,9 кг 20 по 1000шт кор.на.поддоне 000 1 02"
        ],
    ],
)

# 构建正则表达式:匹配两类目标数字
regex = r'вес:\s*(\d+(?:,\d+)?)\s*кг|(\d+(?:,\d+)?)\s*(шт|мл)'

# 提取所有匹配的数字,过滤空值并整理为列表
df['extracted_numbers'] = df['description'].apply(
    lambda x: [num for num in re.findall(regex, x) if num != ('', '', '')]
)
# 进一步整理:把元组中的有效数字提取出来
df['extracted_numbers'] = df['extracted_numbers'].apply(
    lambda lst: [item[0] if item[0] else item[1] for item in lst]
)

print(df['extracted_numbers'])

代码说明

  1. 正则表达式解析:
    • вес:\s*(\d+(?:,\d+)?)\s*кг:精准匹配вес:后紧跟的数字(支持整数和逗号小数格式),前后允许任意空格
    • (\d+(?:,\d+)?)\s*(шт|мл):匹配шт或мл前的数字,兼容有无空格的格式
    • 用|合并两个模式,实现一次扫描匹配所有目标内容
  2. 高效处理:结合re.findall与Pandas的apply方法,逻辑精简,适合大数据量场景
  3. 结果整理:过滤正则匹配产生的空值,将元组中的有效数字提取为纯列表格式

输出结果

0                  ['96,9', '100']
1                  ['6,4', '3500']
2                 ['114', '3200']
3    ['96,9', '100', '1000']
Name: extracted_numbers, dtype: object

内容的提问来源于stack exchange,提问作者Madina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:25:39