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

Pandas支持的最早闰年是哪一年?如何用其转换日序列为日期?

用Pandas支持的最早闰年处理日序转日期

完全可以这么操作——选一个Pandas兼容的、足够早的闰年,既能完美容纳1-366的日序(包括闰年的2月29日),又能保证这个年份几乎不会出现在你的业务时间序列里。

选哪个年份?

推荐用1600年:它是公历规则中明确的闰年(整百年份能被400整除),而且Pandas/numpy的datetime64类型对其完全支持。这个年份远早于绝大多数现代业务数据的时间范围,几乎不可能和你的现有数据重叠。如果需要更早的,1200年也是合规的闰年且Pandas支持,但1600年的兼容性和辨识度更好。

实际代码示例

情况1:直接处理日序(Day of Year)列

如果你的原始数据是1-366的日序,可以直接生成对应闰年的日期:

import pandas as pd

# 示例日序列
doy_series = pd.Series([1, 100, 366])
# 转成1600年的日期,%j对应日序格式
converted_dates = pd.to_datetime(doy_series, format='%j', year=1600)

情况2:替换已有datetime列的年份

对应你提供的示例代码,修改年份为1600即可,推荐用向量化的dt.replace代替apply,效率更高:

import pandas as pd

dates = pd.Series(pd.to_datetime(['2023-05-01', '2021-12-15', '2019-07-20']))
first_leap_year = 1600
# 向量化替换年份,比apply高效
new_dates = dates.dt.replace(year=first_leap_year)

注意点

  • 必须确保所选年份是闰年,否则日序366会解析失败(非闰年只有365天)。
  • 1600年及更早的闰年在Pandas中都能正常处理,但越早期的年份在某些外部系统(如数据库)中可能存在兼容性问题,1600年是平衡“早”和“兼容”的最优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:07:38