计算日期和时间戳列之间的时间差(以分钟为单位)
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
列转换为datetime
s,而只能转换为timedelta
s并且如果有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 吗?以上是关于计算日期和时间戳列之间的时间差(以分钟为单位)的主要内容,如果未能解决你的问题,请参考以下文章