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

如何提取Pandas列中的指定字符串片段并生成新列

实现方案

Pandas 内置了字符串正则提取方法,完全可以实现类似 SQL LIKE 的匹配效果,甚至灵活性更高,你可以用 str.extract() 配合正则表达式完成需求。

完整代码示例

import pandas as pd
import numpy as np

# 构造示例DataFrame
d = {'col1': [1, 2,3,4,5,60,0,0,6,3,2,4],
     'col3': [1, 22,33,44,55,60,1,5,6,3,2,4],
     'Name': ['2a df a1asd_V1', 'xcd a2asd_V3','23vg aabsd_V1','dfgdf_aabsd_V0','a3as  d_V1','aa bsd_V3','aasd_V4','aabsd_V4','aa_adn sd_V15',np.nan,'aasd_V12','aasd120Abs'],
     'Date': ['2021-06-13', '2021-06-13','2021-06-13','2021-06-14','2021-06-15','2021-06-15','2021-06-13','2021-06-16','2021-06-13','2021-06-13','2021-06-13','2021-06-16']}
dff = pd.DataFrame(data=d)

# 提取第一个版本列(格式为V+数字),无匹配则留空
dff['Version'] = dff['Name'].str.extract(r'(V\d{1,2})$').fillna('')
# 提取第二个版本列(格式为Version+空格+数字),无匹配则留空
dff['Version_Desc'] = ('Version ' + dff['Name'].str.extract(r'V(\d{1,2})$')).fillna('')

逻辑说明

  • 正则表达式 r'(V\d{1,2})$' 的作用:
    • V 匹配大写字母V
    • \d{1,2} 匹配1-2位数字,刚好覆盖V0到V20的需求范围
    • $ 限定匹配必须在字符串末尾,避免匹配到字符串中间的V+数字内容
    • 括号为捕获组,str.extract() 会直接返回捕获组匹配到的内容
  • fillna('') 会将未匹配到的结果、Name列为NaN的对应位置替换为空字符串,符合你的留空要求
  • 如果需要同时兼容小写v的场景,把正则改成 r'([Vv]\d{1,2})$' 即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:54:00