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

如何在Pandas中查找字母并提取其关联的字母数字组合

问题

需要在Pandas DataFrame中新增一列Sem,从Sem_Year列里提取以H开头后跟数字的组合(如H1、H2),不管该组合在Sem_Year中的位置。

初始数据示例:

MonthSem_Year
2020-04-01H1 2020
2020-05-012020 H1
2020-06-01H1 2020
2020-07-01H2 2020
2020-08-01H2 2020
2020-09-012020 H2
2020-10-012020 H2
2020-11-01H2 2020
2020-12-01H2 2020
2021-01-01H1 2021
2021-02-01H1 2021

期望处理后的数据:

MonthSem_YearSem
2020-04-01H1 2020H1
2020-05-012020 H1H1
2020-06-01H1 2020H1
2020-07-01H2 2020H2
2020-08-01H2 2020H2
2020-09-012020 H2H2
2020-10-012020 H2H2
2020-11-01H2 2020H2
2020-12-01H2 2020H2
2021-01-01H1 2021H1
2021-02-01H1 2021H1

解决方案

可以使用Pandas的str.extract()方法结合正则表达式,精准提取目标内容:

代码实现

import pandas as pd

# 构造示例数据
data = {
    'Month': ['2020-04-01', '2020-05-01', '2020-06-01', '2020-07-01', '2020-08-01',
              '2020-09-01', '2020-10-01', '2020-11-01', '2020-12-01', '2021-01-01', '2021-02-01'],
    'Sem_Year': ['H1 2020', '2020 H1', 'H1 2020', 'H2 2020', 'H2 2020',
                 '2020 H2', '2020 H2', 'H2 2020', 'H2 2020', 'H1 2021', 'H1 2021']
}

df = pd.DataFrame(data)

# 新增Sem列,提取H后跟数字的组合
df['Sem'] = df['Sem_Year'].str.extract(r'(H\d+)')

print(df)

代码说明

  • str.extract(r'(H\d+)'):正则表达式H\d+匹配以字母H开头、后面跟一个或多个数字的字符串,括号用于捕获目标匹配内容。
  • 无论H1/H2在Sem_Year中的位置是前还是后,该正则都能精准提取对应的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:55:19