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

Python Pandas Dataframe提取字符串开头数字:解决多数字合并问题

仅提取字符串开头的数字,避免合并后续数字

需求:提取字符串开头的数字,现有数据示例:

column1
10units
200 mg
4000units/40mg
40 units

使用以下代码时,含多个数字的单元格会把所有数字合并,其余结果正常:

df['newcolumn'] = df['column1'].astype('str').str.extractall('(\d+)').unstack().fillna('').sum(axis=1).astype(int)

当前输出:

newcolumn
    10
    200
    400040
    40

期望输出(仅保留开头数字):

newcolumn
        10
        200
        4000
        40

修正方案

原代码用extractall会匹配字符串中所有数字,导致后续数字被合并。改用str.extract配合锚定字符串开头的正则表达式,仅提取起始位置的连续数字:

df['newcolumn'] = df['column1'].astype('str').str.extract('^(\d+)').astype(int)

说明:

  • ^ 是正则锚点,限定匹配必须从字符串开头开始
  • (\d+) 匹配一段连续的数字序列
  • str.extract 只会提取第一个匹配结果(也就是开头的数字),无需额外的unstack或求和操作

运行修正后的代码,即可得到符合预期的输出,不会合并后续出现的数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 23:20:32