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

如何在Python Pandas中计算字符串格式日期列的差值?

解决方法

你的报错核心问题是日期格式匹配错误——%B 对应完整月份名称(比如英文里的January),而你的日期字符串用的是月份缩写May,应该用%b来匹配。另外,不需要把pandas datetime对象转成Python原生的date(),直接用pandas的datetime系列运算更高效。

正确代码步骤:

  1. 将字符串日期列转换为pandas datetime类型,指定正确的格式:
import pandas as pd

df1 = pd.DataFrame({'date1' : ['30-May-2024','30-May-2024','30-May-2024'],'date2' : ['20-May-2024','20-May-2024','10-May-2024']})

# 转换日期列,指定格式匹配缩写月份
df1['date1'] = pd.to_datetime(df1['date1'], format='%d-%b-%Y')
df1['date2'] = pd.to_datetime(df1['date2'], format='%d-%b-%Y')
  1. 计算日期差并提取天数:
date_diff = (df1['date1'] - df1['date2']).dt.days
print(date_diff)

输出结果:

0    10
1    10
2    20
dtype: int64

错误点说明:

  • 你原代码里用.date()是错误的,pandas的datetime Series不能直接调用单个datetime对象的.date()方法,需要用.dt.date,但其实完全没必要转成原生date对象,pandas自己的datetime类型直接相减就能得到时间差,再用.dt.days提取天数即可。
  • 报错里的格式不匹配,是因为解析时用了%B(完整月份名),而你的日期是缩写月份,换成%b就能正确匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:15:00