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

从字符串提取q后连续数字及百万行DataFrame高效处理问题

解决方案

针对你的两个问题,我整理了高效且精准的处理方案:

1. 提取q后紧跟的连续数字

要精准捕获q之后的连续数字(直到遇到非数字字符停止),可以用正则表达式配合pandas的str.extract方法。这里用到的正则是r'q(\d+)',拆解一下:

  • q:匹配固定字母q
  • (\d+):捕获一个或多个连续的数字(这部分就是我们需要提取的内容)

str.extract会自动提取捕获组的内容,没有匹配到q的行会返回NaN,后续我们再把这些空值转为0即可。

2. 高效处理百万行数据

你原来的for循环在百万行数据上会非常低效——Python层面的逐行循环开销极大。而pandas的字符串方法都是矢量化操作(底层用C实现批量处理),效率能提升几个数量级,同时代码更简洁易读。

完整代码

# 提取q后的连续数字,无匹配则返回NaN
df['AmountPaid'] = df['Product'].str.extract(r'q(\d+)', expand=False)
# 将空值替换为0,并转换为整数类型
df['AmountPaid'] = df['AmountPaid'].fillna(0).astype(int)

效果验证

运行后你的DataFrame会完全符合预期:

ProductAmountPaid
none0
q11
q123123
q12_a12312

效率优势说明

  • 矢量化操作一次性处理整列数据,避免了Python循环的逐行判断开销
  • 代码逻辑更清晰,减少了手动循环可能出现的索引错误或性能瓶颈

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:58:37