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

如何在Pandas DataFrame中创建计算不同数据类型日期列天数差的新列

实现方法

当然有办法实现你的需求!核心是先统一日期类型,再按日期维度计算间隔天数(忽略具体时间),具体步骤如下:

步骤1:把as_of_date转换为datetime类型

因为当前as_of_date是object(字符串)类型,无法直接和sales_date(datetime类型)做日期运算,所以第一步先转换类型:

df['as_of_date'] = pd.to_datetime(df['as_of_date'])

步骤2:计算日期差值生成days列

你的需求是只看日期间隔(比如6月29日和6月27日不管时间差多少都算2天),所以我们需要先把两个日期的时间部分去掉,再计算天数差:

# 方法1:提取日期部分后计算差值
df['days'] = (df['as_of_date'].dt.date - df['sales_date'].dt.date).apply(lambda x: x.days)

# 方法2:用floor归一化到当天0点后计算(更简洁的pandas风格写法)
df['days'] = (df['as_of_date'].dt.floor('D') - df['sales_date'].dt.floor('D')).dt.days

最终结果验证

执行完上述代码后,你的DataFrame会变成你预期的样子:

as_of_datesales_datedays
2021-06-292021-06-27 16:06:552
2021-06-292021-06-03 14:33:2526

补充说明

如果直接用df['as_of_date'] - df['sales_date'],得到的是包含小时分钟的完整时间差(比如第一行是1 days 07:53:05),取dt.days会得到1,但这不符合你的需求——所以必须先忽略时间部分,只按日期维度计算间隔。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 20:12:51