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

如何用带if/else的正则表达式从DataFrame列提取指定单位值?

从DataFrame的Unit列提取指定单位字符串

直接上能用的函数代码,批量处理50行数据完全没问题:

import pandas as pd

def extract_target_units(df):
    # 定义所有要匹配的单位模式,用|分隔,非捕获组避免多余分组
    pattern = r'(\d*\s*(?:milliliter|liter|ounce|kilogram|fluid\s*ounce))'
    # 批量提取匹配内容,无匹配返回NaN
    extracted = df['Unit'].str.extract(pattern, expand=False)
    # 把空值转成None,满足无匹配时返回None的要求
    return extracted.apply(lambda x: x if pd.notna(x) else None)

关键说明

  • 模式里的\d*匹配0个/多个数字,\s*匹配0个/多个空格,能覆盖"250 milliliter"、"1liter"、"fluid ounce"这类各种格式
  • (?:...)是非捕获组,把所有单位选项打包,确保str.extract只返回我们要的完整匹配串
  • 没必要逐行写if/else:pandas的str.extract会一次性处理整列数据,之后用apply把空值(NaN)转成None,比循环写判断高效多了

使用示例

假设你的DataFrame叫df,可以这么用:

# 获取提取结果
unit_results = extract_target_units(df)
# 或者直接给原DataFrame加一列存提取值
df['Extracted_Unit'] = extract_target_units(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:36:07