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

如何用Pandas计算每个人的时间时长(最新减最早日期)

用Pandas计算个体时间跨度的方法

步骤1:确保日期列是datetime类型

首先得把日期列转换成Pandas可识别的datetime格式,否则无法进行时间运算:

import pandas as pd

# 假设你的个体标识列名为`individual_id`,日期列名为`date`
df['date'] = pd.to_datetime(df['date'])

步骤2:按个体分组计算时间跨度

有两种实用方法,可根据需求选择:

方法一:直接生成时间跨度结果

通过groupby分组后,用apply直接计算每组最新日期与最早日期的差值:

time_spans = df.groupby('individual_id')['date'].apply(lambda x: x.max() - x.min())

返回的time_spans是一个Series,索引为个体ID,值为对应时间差(默认是Timedelta类型,会显示天、小时等单位)。

方法二:保留最大/最小日期并计算差值

如果需要同时查看每个个体的最早、最新日期,先聚合这两个值,再计算跨度:

# 聚合每个个体的最大、最小日期
date_summary = df.groupby('individual_id')['date'].agg(['max', 'min'])
# 新增列计算时间跨度
date_summary['time_span'] = date_summary['max'] - date_summary['min']

得到的date_summary是一个DataFrame,包含每个个体的最早日期、最新日期及对应的时间跨度。

可选:转换时间跨度为指定单位

如果需要将时间差转换成具体天数、小时数等,可通过dt属性提取:

# 转换成天数
date_summary['span_days'] = date_summary['time_span'].dt.days
# 转换成小时数
date_summary['span_hours'] = date_summary['time_span'].dt.total_seconds() / 3600

示例演示

用测试数据验证流程:

data = {
    'individual_id': ['Alice', 'Alice', 'Bob', 'Bob', 'Bob'],
    'date': ['2023-01-05', '2023-06-18', '2022-04-20', '2023-02-10', '2022-11-30']
}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])

# 使用方法二计算
date_summary = df.groupby('individual_id')['date'].agg(['max', 'min'])
date_summary['time_span'] = date_summary['max'] - date_summary['min']
date_summary['span_days'] = date_summary['time_span'].dt.days

print(date_summary)

输出结果:

max        min  time_span  span_days
individual_id                                       
Alice     2023-06-18 2023-01-05 164 days        164
Bob       2023-02-10 2022-04-20 296 days        296

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:10:28