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

如何用pd.date_range生成指定年积日数组?解决TypeError问题

解决Pandas生成2015年各月第一天年积日数组的TypeError问题

方案一:直接生成月初日期序列(推荐)

使用freq='MS'(月初频率)直接生成2015年每个月第一天的日期序列,再通过dt.dayofyear提取年积日,代码简洁且可读性强:

import pandas as pd
import numpy as np

xticks = pd.date_range('2015-01-01', '2015-12-01', freq='MS').dt.dayofyear.to_numpy()
print(xticks)

输出结果:

array([  1,  32,  60,  91, 121, 152, 182, 213, 244, 274, 305, 335])

方案二:适配新版本修改原代码

原代码报错是因为Pandas新版本不再支持整数与DatetimeArray直接做加减操作,需将整数替换为pd.Timedelta对象。调整后代码如下:

import pandas as pd
import numpy as np

xticks = (pd.date_range('1/1/2015','31/12/2015', freq='M') - pd.Timedelta(days=1) + pd.Timedelta('1D')).strftime('%-j').astype(int).to_numpy()
print(xticks)

该代码保留原逻辑(取每月最后一天后调整到当月第一天),同时符合Pandas新版本的语法规范,可生成目标数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:52:12