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

如何为时间序列索引的Pandas DataFrame添加月内递增列

为时间序列DataFrame添加月度递增列

问题背景

给定一个以日期为索引的pandas DataFrame,示例生成代码如下:

import pandas as pd
import numpy as np

index = pd.date_range('2023-01-01', '2023-12-31', freq='1D')
df = pd.DataFrame({'a' : np.random.randint(0, 10, len(index))}, index=index)

示例数据如下:

a
2023-01-01  3
2023-01-02  2
2023-01-03  1
2023-01-04  3
2023-01-05  8
...        ..
2023-12-27  2
2023-12-28  2
2023-12-29  0
2023-12-30  1
2023-12-31  7

需要添加新列b,使其在每个日历月内呈现递增模式,满足公式:b = 当月日期数 / 当月总天数,最终输出示例如下:

a         b
2023-01-01  0  0.032258
2023-01-02  5  0.064516
2023-01-03  2  0.096774
2023-01-04  7  0.129032
2023-01-05  4  0.161290
...        ..       ...
2023-12-27  6  0.870968
2023-12-28  5  0.903226
2023-12-29  8  0.935484
2023-12-30  2  0.967742
2023-12-31  9  1.000000

实现方法

利用pandas的DatetimeIndex属性可直接提取所需数据,快速生成目标列:

# 提取当月日期数与当月总天数,计算得到列b
df['b'] = df.index.day / df.index.days_in_month

细节说明

  • df.index.day:从日期索引中提取每个日期对应的当月第几天(取值范围为1到该月最后一天)
  • df.index.days_in_month:提取每个日期所在月份的总天数(自动处理平闰年、不同月份天数差异)
  • 两值相除后,每个月的序列会从1/当月天数开始,逐日递增至1,完全符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:15:34