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

如何基于固定起始日期与整数天数偏移列创建Pandas日期列?

问题描述

我有如下单列Pandas DataFrame:

num_days
--------
9236
9601
9636
10454

其中整数为从固定预定义日期开始计算的天数:

START_DATE = pd.to_datetime('1980-01-01')

我希望新增一列日期(通过START_DATE加上对应num_days计算得到),期望结果如下:

num_days, date
--------------
9236      '2005-04-15'
9601      '2006-04-15'
9636      '2006-05-20'
10454     '2008-08-15'

尝试以下代码后执行失败:

df['date'] = pd.to_datetime('1980-01-01') + timedelta(df.num_days)

报错信息:

TypeError: unsupported type for timedelta days component: Series
解决方案

报错原因是Python标准库的timedelta仅支持单个数值输入,无法直接处理Pandas Series对象。以下两种方法可实现批量日期计算:

方法1:使用Pandas内置的to_timedelta函数

pd.to_timedelta可以直接将整数列转换为时间差对象,再与起始日期做矢量相加:

import pandas as pd

START_DATE = pd.to_datetime('1980-01-01')
df['date'] = START_DATE + pd.to_timedelta(df['num_days'], unit='D')

方法2:通过apply逐个转换天数

利用apply对Series中每个元素生成Timedelta对象,再与起始日期相加:

df['date'] = START_DATE + df['num_days'].apply(lambda x: pd.Timedelta(days=x))

如果需要将日期列转为字符串格式(如示例中的'2005-04-15'),可追加以下代码:

df['date'] = df['date'].dt.strftime('%Y-%m-%d')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:55:12