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

如何在Scala中计算DataFrame内两个日期时间的分钟差值并新增列?

计算DataFrame中日期时间的分钟差值

要解决这个问题,我们需要先把分开的日期和时间列合并成完整的datetime对象,再计算两者的差值并转换为分钟。下面是具体的实现步骤,用Python的pandas库来完成:

1. 构造原始DataFrame

首先,我们先把你提供的数据转换成可操作的pandas DataFrame:

import pandas as pd

data = {
    'empId': [1234, 1235],
    'lId': [1212, 1212],
    'date1': ['2018-04-20', '2018-04-20'],
    'time1': ['21:40:29.077', '22:40:29.077'],
    'date2': ['2018-04-20', '2018-04-21'],
    'time2': ['22:40:29.077', '00:40:29.077']
}

df = pd.DataFrame(data)

2. 计算时间差值(分钟)

我们需要将date和time列合并为完整的datetime格式,然后计算差值:

方法一:分步处理(清晰直观)

# 合并日期和时间,转换为datetime类型
df['datetime1'] = pd.to_datetime(df['date1'] + ' ' + df['time1'])
df['datetime2'] = pd.to_datetime(df['date2'] + ' ' + df['time2'])

# 计算差值,转换为分钟(总分钟数)
df['TimeDiff'] = (df['datetime2'] - df['datetime1']).dt.total_seconds() // 60

# 可以选择删除中间的datetime列(如果不需要的话)
# df = df.drop(['datetime1', 'datetime2'], axis=1)

方法二:链式操作(更简洁)

如果你喜欢更紧凑的代码,可以用链式调用完成:

df['TimeDiff'] = (
    pd.to_datetime(df['date2'] + ' ' + df['time2']) - 
    pd.to_datetime(df['date1'] + ' ' + df['time1'])
).dt.total_seconds() // 60

3. 最终输出结果

执行上述代码后,你的DataFrame会变成如下形式:

empIdlIddate1time1date2time2TimeDiff
123412122018-04-2021:40:29.0772018-04-2022:40:29.07760
123512122018-04-2022:40:29.0772018-04-2100:40:29.077120

注意事项

  • pd.to_datetime可以自动识别这种标准的日期+时间字符串格式,不需要额外指定格式参数。
  • 使用dt.total_seconds()可以获取差值的总秒数,再除以60得到分钟数;用//会取整数结果,如果需要保留小数直接除以60即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:58:23