计算日期和时间戳列之间的时间差(以分钟为单位)

Posted

技术标签:

【中文标题】计算日期和时间戳列之间的时间差(以分钟为单位)【英文标题】:Calculating time difference in minutes between a date and a timestamp columnn 【发布时间】:2020-01-02 07:18:09 【问题描述】:

我似乎无法弄清楚我做错了什么, 我的 df 中有 2 列,如下所示,

    Date                Time 
2019-07-23 21:17:47.599  22:00:00.000
2019-07-23 21:11:46.973  21:50:00.000

我想在 df 中创建一个新列,以计算这两列之间的分钟差。我正在尝试两种不起作用的方法。

第一种方法是我使用pd.to_timedelta(pd.to_datetime(df3.Time)-pd.to_timedelta(df3.Date).dt.strftime('%H:%M:%S')) / np.timedelta64(1, 'm')

如果我尝试这个,我会收到 ValueError: only leading negative signs are allowed 的错误

我尝试的第二种方法是通过执行转换日期列

df3['new_time'] = [d.time() for d in df3['Date']]

这给了我一个时间戳,例如22:25:03.895000

然后我使用(pd.to_datetime(df3.Time) - pd.to_datetime(df3.new_time))

我使用的错误是TypeError: <class 'datetime.time'> is not convertible to datetime

我不确定我遗漏了什么或做错了什么,但有没有一种方法可以让我正确地拥有一个新列,以时间 - 日期的分钟数为单位提供值?

非常感谢

【问题讨论】:

【参考方案1】:

你很接近,只是不能将Time列转换为datetimes,而只能转换为timedeltas并且如果有python对象时间首先转换为字符串:

df3['new'] = ((pd.to_timedelta(df3.Time.astype(str))- 
               pd.to_timedelta(df3.Date.dt.strftime('%H:%M:%S'))) /
                 np.timedelta64(1, 'm'))
print (df3)
                     Date          Time        new
0 2019-07-23 21:17:47.599  22:00:00.000  42.216667
1 2019-07-23 21:11:46.973  21:50:00.000  38.233333

【讨论】:

谢谢!,我之前做错了什么?我需要转换为 timedelta 吗?

以上是关于计算日期和时间戳列之间的时间差(以分钟为单位)的主要内容,如果未能解决你的问题,请参考以下文章

两个日期之间的差异(以分钟为单位)

使用 Date-FNS - NaN 错误以分钟为单位获取日期之间的差异

MySQL时间/日期计算

如何在PHP中以分钟为单位获取时差

Python中以分钟为单位的日期差异

计算两个日期时间odoo 10之间的差异[重复]