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

如何从Pandas DataFrame提取含$的子串并创建新列

提取DataFrame中含$的子串生成新列

问题说明

原始DataFrame结构:

Name:    'Computer', 'Tablet', 'Monitor'
Price:   900, 300, 400
Identifier:  '11$10qw-IDAA', '2222-IL$DB123', '2237-12$33AVD-ewwfq'

需要新增NewString列,提取Identifier列中包含$的子串,最终结果如下:

NewString
11$10qw
IL$DB123
12$33AVD

尝试两层嵌套循环未解决问题,以下是更高效的Pandas矢量化解决方案:

解决方案

方法1:拆分后筛选

利用Pandas字符串方法拆分并筛选目标子串,避免循环:

import pandas as pd

# 构造DataFrame
df = pd.DataFrame({
    'Name': ['Computer', 'Tablet', 'Monitor'],
    'Price': [900, 300, 400],
    'Identifier': ['11$10qw-IDAA', '2222-IL$DB123', '2237-12$33AVD-ewwfq']
})

# 按'-'拆分后筛选含$的子串
df['NewString'] = df['Identifier'].str.split('-').apply(lambda lst: [s for s in lst if '$' in s][0])

方法2:正则表达式提取(更高效)

直接用正则匹配并提取目标子串,性能优于循环和列表推导:

# 用正则提取两个'-'之间(或首尾)含$的子串
df['NewString'] = df['Identifier'].str.extract(r'([^\-]*\$[^\-]*)')

正则说明:[^\-]*匹配任意非-的字符,\$匹配$(需转义),整体匹配包含$且被-分隔的子串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:42:18