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

如何从pandas字符串列中正确提取带正负号的数值上下限

正确实现代码

你可以直接用str.extract()匹配两个捕获组完成拆分,不需要用extractall,正则表达式写为^(-?\d+)-(\d+)$即可区分负号和分隔符:

# 拆分valid_values为lower_limit、upper_limit两个字段
data_dict[['lower_limit', 'upper_limit']] = data_dict['valid_values'].str.extract(r'^(-?\d+)-(\d+)$')
# 可选:将拆分得到的字符串转为整数类型
data_dict[['lower_limit', 'upper_limit']] = data_dict[['lower_limit', 'upper_limit']].astype(int)

逻辑说明

你的两种原有写法的问题分别是:第一种正则(\d+)未覆盖负号场景,导致下限的负号丢失;第二种正则([+-]\d+)会把分隔符的-识别为上限的符号,导致上限结果错误。

本次使用的正则匹配规则:

  • ^ 匹配字符串开头
  • 第一个捕获组(-?\d+):匹配可选负号 + 多位数字,对应范围的下限,会自动保留负号
  • 中间的-:固定匹配上下限之间的分隔符
  • 第二个捕获组(\d+):匹配多位正整数,对应范围的上限,不会误加负号
  • $ 匹配字符串结尾,避免异常格式干扰
    你给出的所有测试样例都可以用以上代码正确拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:06:04