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

如何分离DataFrame列中字母与数字并扩展季度日期格式?

问题

需要分离DataFrame中type列的字母与数字字符,同时将qtr列的季度日期格式(如Q1 24)扩展为完整年份格式(如Q1 2024)。

原始数据

state   stat1   type    stat2   qtr
NY      up      AAA01   Gr      Q1 24
NY      up      AAA02   Re      Q1 24
NY      up      BB01    Gr      Q1 24
NY      up      DD01    Gr      Q1 24
NY      up      DD02    Gr      Q1 24
CA      low     AAA01   Re      Q2 24
CA      low     DD01    Re      Q2 24
CA      low     AAA01   Re      Q2 24
CA      low     SSS01   Gr      Q2 24

期望结果

state   stat1   type    stat2   qtr
NY      up      AAA     Gr      Q1 2024
NY      up      AAA     Re      Q1 2024
NY      up      BB      Gr      Q1 2024
NY      up      DD      Gr      Q1 2024
NY      up      DD      Gr      Q1 2024
CA      low     AAA     Re      Q2 2024
CA      low     DD      Re      Q2 2024
CA      low     AAA     Re      Q2 2024
CA      low     SSS     Gr      Q2 2024

当前代码问题

当前代码存在两个核心问题:

  • type列用str[:3]固定取前3个字符,无法适配BB01这类字母长度不足3的情况,会保留数字字符
  • qtr列仅做了拆分拼接,未将两位年份(24)扩展为完整四位年份(2024)

优化方案

直接用正则表达式精准处理目标列,无需额外中间列:

import pandas as pd

# 读取原始数据(示例)
data = [
    ["NY", "up", "AAA01", "Gr", "Q1 24"],
    ["NY", "up", "AAA02", "Re", "Q1 24"],
    ["NY", "up", "BB01", "Gr", "Q1 24"],
    ["NY", "up", "DD01", "Gr", "Q1 24"],
    ["NY", "up", "DD02", "Gr", "Q1 24"],
    ["CA", "low", "AAA01", "Re", "Q2 24"],
    ["CA", "low", "DD01", "Re", "Q2 24"],
    ["CA", "low", "AAA01", "Re", "Q2 24"],
    ["CA", "low", "SSS01", "Gr", "Q2 24"],
]
df = pd.DataFrame(data, columns=["state", "stat1", "type", "stat2", "qtr"])

# 1. 提取type列中的所有字母字符
df["type"] = df["type"].str.extract(r'([A-Za-z]+)')

# 2. 将qtr列的两位年份扩展为四位年份
df["qtr"] = df["qtr"].str.replace(r' (\d{2})$', r' 20\1')

print(df)

代码说明

  • 处理type列:str.extract(r'([A-Za-z]+)')会匹配并提取该列中所有连续的字母字符,不管字母长度多少,完美分离字母和数字
  • 处理qtr列:str.replace(r' (\d{2})$', r' 20\1')匹配末尾的两位年份,替换为20+原两位数字,实现年份扩展

运行后输出与期望结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:33:24