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

Pandas str.extract正则提取Price_Min_COR对应值的正确写法

提取指定字符间子串的实现方案

已知需求信息

  • 待处理目标字符串:{'Price_Min_COR': 21561.32, 'Price_Max_COR': 21600}
  • 起始定位字符:'Price_Min_COR':
  • 结束定位字符:,
  • 预期提取结果:21561.32

前期代码失效原因

  1. 第一版正则用双引号包裹Price_Min_COR,和目标字符串里的单引号格式不匹配,无法命中起始位置
  2. 第二版正则没有匹配'Price_Min_COR':后紧跟的空格,且\b单词边界放置位置错误,捕获逻辑失效
  3. 未显式将字典对象转为字符串类型,部分场景下str访问器的匹配行为会出现异常

可用实现方案

正则提取方案

使用如下正则即可正确提取目标值,测试代码可直接运行:

import pandas as pd
import numpy as np

Open_Time_s=['2022-04-30 11:05:00+03:00','2022-04-30 11:10:00+03:00', np.nan, np.nan]
dici=[np.nan,np.nan,{'Price_Min_COR': 21561.32, 'Price_Max_COR': 21600},{'Price_Min_COR': 21561.32, 'Price_Max_COR': 21600}]
df = pd.DataFrame.from_dict({'OPEN_TIME':Open_Time_s,'dicts':dici})

# 正确正则提取代码
result = df[df['dicts'].notna()].dicts.astype(str).str.extract(r"'Price_Min_COR':\s*([^,]+)")
print(result)

正则逻辑说明:

  • 'Price_Min_COR'::精准匹配指定的起始定位字符串,和目标格式完全对齐
  • \s*:匹配冒号后任意数量的空白字符,兼容不同空格数量的场景
  • ([^,]+):捕获组,匹配所有非逗号的连续字符,遇到结束定位符逗号自动停止,捕获内容就是目标数值

更稳妥的非正则方案

如果列中存储的是原生字典对象,不需要转字符串用正则提取,直接取键值的方式稳定性更高,不会受字符串格式变动影响:

result = df[df['dicts'].notna()].dicts.apply(lambda x: x.get('Price_Min_COR'))
print(result)

内容的提问来源于stack exchange,提问作者максим ильин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:57:25