如何从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
相关产品推荐
相关产品推荐

