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

如何在Pandas中对含公元1年日期的object类型列进行日期相加?

解决方案

核心思路

date_2列的数值本质是相对于公元1年1月1日的时间间隔,而非实际的历史日期。因此我们需要先计算该列与公元1年1月1日的时间差,再将这个差值加到date_1上得到结果。

完整代码实现

import pandas as pd

# 创建用户提供的DataFrame
data = {
    'date_1': ['2024-07-07 18:00:00.000000', '2024-07-07 08:46:00.000000', '2024-07-07 17:42:00.000000', '2024-07-07 17:42:00.000000'],
    'date_2': ['0001-01-02T01:12:53.832', '0001-01-04T08:00:00', '0001-01-08T02:00:00', '0002-01-01T02:00:00']
}
df = pd.DataFrame(data)

# 转换date_1为datetime类型
df['date_1'] = pd.to_datetime(df['date_1'])

# 计算date_2对应的时间间隔
base_date = pd.to_datetime('0001-01-01')
df['time_delta'] = pd.to_datetime(df['date_2']) - base_date

# 生成结果并格式化
df['result_date'] = (df['date_1'] + df['time_delta']).dt.strftime('%Y-%m-%d %H:%M:%S')

# 保留原列与结果列(可选)
df = df[['date_1', 'date_2', 'result_date']]

print(df)

步骤说明

  1. 转换date_1: 直接用pd.to_datetime将字符串转为datetime类型,支持高精度时间格式。
  2. 计算时间间隔: 将date_2转为datetime后,与基准日期0001-01-01求差,得到需要叠加的时长。
  3. 生成结果: 将时间间隔加到date_1上,再用dt.strftime格式化为示例要求的字符串样式。

输出结果

运行代码后将得到与示例完全一致的result_date列:

date_1                  date_2         result_date
0 2024-07-07 18:00:00  0001-01-02T01:12:53.832  2024-07-08 19:12:53
1 2024-07-07 08:46:00    0001-01-04T08:00:00  2024-07-10 16:46:00
2 2024-07-07 17:42:00    0001-01-08T02:00:00  2024-07-14 19:42:00
3 2024-07-07 17:42:00    0002-01-01T02:00:00  2025-07-07 19:42:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:28:18