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

如何从pandas混合格式的prices列中提取每条记录的最低数值

解决方案

核心思路是用正则直接提取文本中所有的数值片段,跳过无关字符后再取最小值,兼容所有你提到的场景。

完整实现代码

import pandas as pd
import re

# 自定义价格提取函数
def get_min_price(content):
    # 统一转为字符串,兼容原生为int/float的条目
    content_str = str(content)
    # 匹配所有整数、小数字符串
    num_str_list = re.findall(r'\d+\.?\d*', content_str)
    # 转换为float后取最小值返回
    return min(float(num) for num in num_str_list)

# 对prices列应用函数
df['prices'] = df['prices'].apply(get_min_price)

逻辑说明

  • 正则r'\d+\.?\d*'可以匹配所有不带负号的整数、小数,自动过滤掉所有非数值的无关字符(比如你示例中g条目的Normal: 、Premium:等)
  • 先将所有内容转字符串的操作,避免了原本就是数值类型的条目调用字符串方法时报错
  • 代码量少,逻辑清晰,符合Python惯用的pandas处理范式

边界情况补充

如果你的价格存在负数的情况,只需要把正则调整为r'-?\d+\.?\d*'即可适配负数值提取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:39:03