如何用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
相关产品推荐
相关产品推荐

