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

使用Pandas将长季度日期格式转换为短季度日期格式

解决方案

针对你需要处理DataFrame的Date列,将空格替换为"."并保留年份后两位的需求,这里给出几种可行的实现方式:

方法一:正则表达式替换(最简洁)

利用str.replace结合正则表达式,一次性完成空格替换和年份截取:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    "ID": ["AA", "BB", "CC", "CC", "CC", "DD"],
    "Date": ["Q1 2022", "Q4 2024", "Q2 2025", "Q3 2025", "Q1 2021", "Q2 2021"]
})

# 处理Date列
df["Date"] = df["Date"].str.replace(r' (\d{2})(\d{2})', r'.\2', regex=True)

解释:正则r' (\d{2})(\d{2})'匹配空格加四位年份,把空格替换为".",并只保留后两位年份(\2对应第二个捕获组的两位数字)。

方法二:拆分字符串后拼接

先把Date列按空格拆分成季度和年份两部分,再分别处理后拼接:

# 拆分季度和年份
df[["Quarter", "Year"]] = df["Date"].str.split(" ", expand=True)
# 拼接处理后的内容:季度 + "." + 年份后两位
df["Date"] = df["Quarter"] + "." + df["Year"].str[-2:]
# 可选:删除临时生成的拆分列
df = df.drop(["Quarter", "Year"], axis=1)

方法三:apply自定义函数

如果需要更灵活的处理逻辑,可以用apply调用自定义函数:

def process_date(date_str):
    quarter, year = date_str.split(" ")
    return f"{quarter}.{year[-2:]}"

df["Date"] = df["Date"].apply(process_date)

纠正你之前尝试的错误:

  • df.Date.fillna(value=., inplace=True)是填充缺失值的方法,并非替换空格,替换空格应使用str.replace(" ", "."),但单独替换后仍需处理年份,不如用正则一步到位。
  • df["Date"].str[2:]会直接截取从第3个字符开始的内容,比如"Q1 2022"会变成" 2022",完全丢失了季度信息,不符合需求。

执行上述任意一种方法后,DataFrame会输出你期望的结果:

ID   Date
0  AA  Q1.22
1  BB  Q4.24
2  CC  Q2.25
3  CC  Q3.25
4  CC  Q1.21
5  DD  Q2.21

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:10:44