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

如何在Python Pandas的SQL查询中比较日期与年度季度(yyyyQQ)?

处理Pandas中日期转季度格式并筛选的方法

嘿,这个需求我之前做过好几次,其实不用太麻烦——Pandas本身就有现成的工具可以搞定,当然如果想自己实现也很简单,我给你一步步讲清楚:

一、用Pandas内置方法快速实现(推荐)

首先要确保你的「审核日期」列是datetime类型,如果还不是的话,先转一下:

import pandas as pd

# 转换日期列类型(如果还不是datetime的话)
df['审核日期'] = pd.to_datetime(df['审核日期'])

接下来,Pandas的dt访问器里有个to_period('Q')方法,可以直接把日期转成季度周期对象,再转成字符串就是yyyyQq的格式了:

# 生成季度格式字符串列
df['审核季度'] = df['审核日期'].dt.to_period('Q').astype(str)

现在就可以直接用这个列做筛选了,筛选2016年第四季度及之后的数据:

filtered_df = df[df['审核季度'] >= '2016Q4']

甚至可以不用生成新列,直接在筛选条件里写,更简洁:

filtered_df = df[df['审核日期'].dt.to_period('Q').astype(str) >= '2016Q4']

二、Python标准库自定义实现(如果需要自己写逻辑)

Python标准库的datetime模块没有直接生成yyyyQq格式的函数,但我们可以自己写一个简单的函数来实现:

from datetime import datetime

def date_to_quarter_str(date):
    # 计算季度:1-3月→Q1,4-6→Q2,以此类推
    quarter = (date.month - 1) // 3 + 1
    return f"{date.year}Q{quarter}"

如果是Pandas的Series,用apply方法调用这个函数就行:

# 注意如果列是datetime类型才能直接传进去,否则先转类型
df['审核季度'] = df['审核日期'].apply(date_to_quarter_str)

小提示

  • 优先用Pandas的dt.to_period方法,因为它是向量化操作,处理大数据量的时候比apply快很多;
  • 字符串格式的季度(比如2016Q4)是可以直接按字典序比较的,因为年份在前,季度在后,逻辑和日期大小一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:14:04