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

如何将Pandas的Period列拆分为季度和年份两个独立列

Pandas拆分非标准Period列为季度、年份列解决方案

针对格式为Q[数字]'[两位年份]的object类型Period列,可通过以下两种方式实现拆分:

方法1:字符串分割(适合格式高度规整的场景)

直接以单引号为分隔符拆分后补全年份前缀即可,代码如下:

import pandas as pd
# 构造示例数据
df = pd.DataFrame({'Period': ["Q3'16", "Q1'17", "Q2'17","Q3'17"]})
# 拆分列为两列
df[['Quarter', 'Year']] = df['Period'].str.split("'", expand=True)
# 补全为四位年份,默认均为20xx年,若有19xx需求可自行调整逻辑
df['Year'] = '20' + df['Year']
# 可选:删除原始Period列
df = df.drop('Period', axis=1)

运行后即可得到预期结果:

Quarter  Year
0      Q3  2016
1      Q1  2017
2      Q2  2017
3      Q3  2017

方法2:正则提取(容错性更高)

如果存在部分数据格式不规整的情况,可通过正则匹配精准提取季度和年份信息:

# 正则规则解释:(Q\d)匹配Q+1位数字的季度部分,(\d{2})匹配单引号后的两位年份
df[['Quarter', 'Year']] = df['Period'].str.extract(r"(Q\d)'(\d{2})")
df['Year'] = '20' + df['Year']

如果需要兼容19xx年份,可调整年份处理逻辑:

# 示例:两位年份大于等于90则判定为19xx,否则为20xx,可根据业务需求调整阈值
df['Year'] = df['Year'].apply(lambda x: f"19{x}" if int(x) >=90 else f"20{x}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:24:01