计算两列之间的Pandas数据帧时差(以小时和分钟为单位)

2024-09-24 06:32:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个数据框中有两列from和to date

当我尝试添加新列diff with以查找两个日期之间的差异时

df['diff'] = df['todate'] - df['fromdate']

如果超过24小时,我会在几天内得到diff列。

2014-01-24 13:03:12.050000,2014-01-26 23:41:21.870000,"2 days, 10:38:09.820000"
2014-01-27 11:57:18.240000,2014-01-27 15:38:22.540000,03:41:04.300000
2014-01-23 10:07:47.660000,2014-01-23 18:50:41.420000,08:42:53.760000

如何仅在小时和分钟内转换结果,而忽略天甚至秒。


Tags: to数据fromdfdatewithdiff差异
2条回答

Pandas时间戳差异返回datetime.timedelta对象。这可以通过使用*as_type*方法轻松地转换为小时,如下所示

import pandas
df = pandas.DataFrame(columns=['to','fr','ans'])
df.to = [pandas.Timestamp('2014-01-24 13:03:12.050000'), pandas.Timestamp('2014-01-27 11:57:18.240000'), pandas.Timestamp('2014-01-23 10:07:47.660000')]
df.fr = [pandas.Timestamp('2014-01-26 23:41:21.870000'), pandas.Timestamp('2014-01-27 15:38:22.540000'), pandas.Timestamp('2014-01-23 18:50:41.420000')]
(df.fr-df.to).astype('timedelta64[h]')

为了屈服

0    58
1     3
2     8
dtype: float64

这让我发疯,因为上面的解决方案对我不起作用。但我找到了另一条路。还没有计时,但可能对其他人有用:

t1 = pd.to_datetime('1/1/2015 01:00')
t2 = pd.to_datetime('1/1/2015 03:30')

print pd.Timedelta(t2 - t1).seconds / 3600.0

…如果你想要几个小时。或:

print pd.Timedelta(t2 - t1).seconds / 60.0

…如果你需要时间的话。

相关问题 更多 >