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

如何为DataFrame创建季度内天数统计列day_of_quarter?

计算DataFrame中日期的季度内已过天数

方法一:直接使用Pandas内置属性(最简便)

Pandas的datetime64类型自带dayofquarter属性,无需手动标记季度起始日就能直接获取季度内天数:

import pandas as pd

# 示例数据
data = {
    'dates': [pd.Timestamp('2003-06-29'), pd.Timestamp('2003-06-30'), pd.Timestamp('2003-07-01'), pd.Timestamp('2003-07-02')],
    'is_quarter_begin': [False, False, True, False]
}
df = pd.DataFrame(data)

# 直接生成季度内天数列
df['day_of_quarter'] = df['dates'].dt.dayofquarter

执行后输出结果:

datesis_quarter_beginday_of_quarter
2003-06-29False90
2003-06-30False91
2003-07-01True1
2003-07-02False2

方法二:基于已有的is_quarter_begin列计算

如果需要严格按照你标记的季度起始日划分区间,可以通过分组累加实现:

import pandas as pd

# 示例数据
data = {
    'dates': [pd.Timestamp('2003-06-29'), pd.Timestamp('2003-06-30'), pd.Timestamp('2003-07-01'), pd.Timestamp('2003-07-02')],
    'is_quarter_begin': [False, False, True, False]
}
df = pd.DataFrame(data)

# 生成季度分组键:每遇到一个季度起始日,分组编号加1
df['quarter_group'] = df['is_quarter_begin'].cumsum()

# 每个分组内从1开始逐日计数
df['day_of_quarter'] = df.groupby('quarter_group').cumcount() + 1

# 可选:删除临时分组列
df = df.drop('quarter_group', axis=1)

该方法完全依赖你自定义的is_quarter_begin标记,适合非标准季度划分的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:57:43