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

Python DataFrame提取子串:如何高效获取-B-或B之前的内容?

高效提取DataFrame ID列的目标子串

针对你提到的ID固定格式(开头为若干字母+数字,后续紧跟-B-或B),完全没必要用for循环处理,直接用pandas内置的字符串操作就能高效实现,比循环快得多,给你两种实用方案:

方案1:用str.extract精准匹配前缀

写正则直接匹配开头的字母+数字序列,正则^([A-Za-z]+\d+)的作用是从字符串起始位置,匹配连续的字母加数字组合:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'id': ['A12-B-56', 'E1234B115']})
# 提取目标前缀
df['target_prefix'] = df['id'].str.extract(r'^([A-Za-z]+\d+)')

运行后target_prefix列会得到['A12', 'E1234'],完全符合你的需求。

方案2:用str.split按分隔符拆分

把-B-和B作为拆分分隔符,直接取拆分后的第一个元素:

df['target_prefix'] = df['id'].str.split(r'-B-|B').str[0]

这个方法逻辑更直观,直接按两种可能的分隔符拆分字符串,取第一部分即可。

这两种都是pandas的矢量化操作,内部做了底层优化,数据量越大,对比for循环的效率优势越明显,完全不用手动遍历每一行处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:15:34