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

如何在Pandas中按日期分组计算时间间隔并设组首值为NaN?

解决Pandas按日期分组计算时间间隔的问题

实现步骤

要实现按Date分组后,每组第一个值为NaN,后续值为当前Time与组内前一个Time的间隔分钟数,可按以下步骤操作:

  1. 合并日期与时间为完整时间戳
    首先需要将Date和Time列组合成一个完整的datetime类型列,确保时间计算的准确性。
  2. 按日期分组计算时间差
    使用groupby按Date分组,对合并后的时间戳列调用diff()方法,自动计算每组内当前行与前一行的时间差,最后将差值转换为分钟数。

完整代码示例

import pandas as pd

# 示例原始数据(模拟你的DataFrame结构)
data = {
    'Date': ['2024-05-20', '2024-05-20', '2024-05-20', '2024-05-21', '2024-05-21', '2024-05-21'],
    'Time': ['09:00:00', '09:05:00', '09:12:00', '10:00:00', '10:05:00', '10:12:00']
}
df1 = pd.DataFrame(data)

# 1. 合并Date和Time为完整的datetime列
df1['Datetime'] = pd.to_datetime(df1['Date'] + ' ' + df1['Time'])

# 2. 按Date分组,计算组内时间间隔(转换为分钟)
df1['Time Taken'] = df1.groupby('Date')['Datetime'].diff().dt.total_seconds() / 60

# 可选:删除中间生成的Datetime列(如果不需要保留)
df1 = df1.drop('Datetime', axis=1)

print(df1['Time Taken'])

代码说明

  • pd.to_datetime(df1['Date'] + ' ' + df1['Time']):将日期字符串和时间字符串拼接后转换为datetime类型,确保时间计算的正确性。
  • df1.groupby('Date')['Datetime'].diff():按日期分组后,diff()方法会为每组的第一个元素返回NaN,后续元素返回当前时间与组内前一个时间的差值(Timedelta类型)。
  • .dt.total_seconds() / 60:将时间差从秒转换为分钟,得到最终需要的间隔数值。

运行后Time Taken列的结果即为:[NaN, 5.0, 7.0, NaN, 5.0, 7.0],完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:25:23