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

如何按分组计算日期列的最大最小日期差值?

按组计算日期最大最小值差值

我有一个包含group列和date列的数据集,想要计算每个group下date列最大日期与最小日期的差值。

示例数据

group      date
main      2024-01-01
main      2024-01-03
main      2024-01-05
second    2024-02-05
second    2024-02-20

预期结果

group      date_diff
main          4
second        15

我已经尝试使用groupby操作,但不清楚后续如何计算差值。


解决方案(Pandas实现)

步骤1:转换日期列类型

首先要确保date列是Pandas的日期时间类型,否则无法正确计算日期差:

import pandas as pd

# 构造或读取你的数据集
df = pd.DataFrame({
    'group': ['main', 'main', 'main', 'second', 'second'],
    'date': ['2024-01-01', '2024-01-03', '2024-01-05', '2024-02-05', '2024-02-20']
})

# 将date列转换为日期时间类型
df['date'] = pd.to_datetime(df['date'])

步骤2:分组计算日期差

有两种简洁的写法可以实现需求:

写法一:使用agg直接计算
# 按group分组,对date列应用lambda函数计算差值的天数
result = df.groupby('group')['date'].agg(lambda x: (x.max() - x.min()).days).reset_index(name='date_diff')
写法二:先计算最大/最小日期再求差

这种写法更直观,适合需要查看每组最大/最小日期的场景:

# 分组计算每组的最大和最小日期
grouped_df = df.groupby('group')['date'].agg(['max', 'min'])
# 计算日期差并提取天数
grouped_df['date_diff'] = (grouped_df['max'] - grouped_df['min']).days
# 整理成预期的结果格式
result = grouped_df.drop(columns=['max', 'min']).reset_index()

最终结果

运行上述代码后,result的输出与预期一致:

group  date_diff
0     main          4
1  second         15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:16:03