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

基于gramaz表删除订单中指定单位及前置数字的Pandas预处理需求

解决方案

可以通过正则表达式结合Pandas的字符串处理方法高效实现需求,针对1万行数据的处理速度完全够用。

实现步骤

  1. 从gramaz DataFrame中提取需删除的单位,构建正则匹配的备选模式
  2. 编写正则规则,精准匹配两类目标内容:
    • 紧邻单位前的数字(含空格)+ 目标单位,例如2 gr、100 lit
    • 单独的目标单位(前面带空格),例如 cc
  3. 执行替换后清理多余空格,保证文本格式整洁

代码示例

import pandas as pd

gramaz = pd.DataFrame({'unit':['cc', 'lit','gr', 'kg' ]})
order = pd.DataFrame({'order':['100 glass','8 sodium 2 gr', 'br kk cc','mgk 100 lit','red pepper', 'black pepper',  'a 10 kg' ]})

# 构造正则匹配的单位备选模式
units_pattern = '|'.join(gramaz['unit'])
# 正则规则:匹配「数字+空格+单位」或「空格+单位」
regex_pattern = r'\d+\s+(?:{})|\s+(?:{})'.format(units_pattern, units_pattern)

# 执行替换并清理空格
order['order'] = order['order'].str.replace(regex_pattern, '', regex=True) \
                               .str.replace(r'\s+', ' ', regex=True) \
                               .str.strip()

print(order)

输出结果

order
0    100 glass
1     8 sodium
2       br kk
3         mgk
4  red pepper
5  black pepper
6            a

正则规则说明

  • \d+:匹配1个及以上数字
  • \s+:匹配1个及以上空格
  • (?:{}):非捕获组,用于包裹备选单位,避免生成不必要的分组
  • |:逻辑或,匹配两种模式中的任意一种

该方法精准定位需删除的内容,不会误删订单中其他位置的数字,处理效率适配1万行规模的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:40:04