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

如何计算Pandas DataFrame日期列表列内最大与最小日期的间隔天数

Pandas 日期列表天数差计算最优方案

以下是两种不同场景下的高性价比实现方式:

方案1:逐行处理(适合中小数据集,代码最简洁)

直接对每行的日期列表做日期格式转换后计算差值,逻辑清晰易维护:

import pandas as pd

# 示例数据
data = [
    ["Item_1", ["2020-06-01", "2020-06-02", "2020-07-05"]],
    ["Item_2", ["2018-04-15", "2018-04-22"]],
    ["Item_3", ["2016-02-15", "2016-02-22", "2016-03-05", "2016-04-01"]],
]
df = pd.DataFrame(data, columns=["Item_ID", "Dates"])

# 新增天数差列
df["day_diff"] = df["Dates"].apply(
    lambda x: (pd.to_datetime(x).max() - pd.to_datetime(x).min()).days
)

方案2:长表转换(适合十万行以上的大数据集,性能更优)

避免逐行遍历的开销,利用 Pandas 向量化运算能力提升处理速度:

# 把日期列表拆分为多行
tmp = df.explode("Dates", ignore_index=False)
# 统一做日期格式转换
tmp["Dates"] = pd.to_datetime(tmp["Dates"])
# 按原索引分组计算差值,合并回原表
df = df.join(
    tmp.groupby(tmp.index)["Dates"].agg(lambda x: (x.max()-x.min()).days).rename("day_diff")
)

注意事项

如果你的Dates列存储的已经是datetime类型而非字符串,可直接去掉pd.to_datetime()转换步骤,运算速度会更快。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:45:00