我已经计算了两列之间的时间增量,并希望将其转换为小时。
我尝试将timedelta提取为小时,即:
df_clean['data__answered_at'] - df_clean['user_entered_details_stage_timestamp__c'].dt.hour
但这似乎不起作用/返回错误消息。
以下是时间增量计算输出的示例:
628 1 days 23:22:26
806 1 days 18:33:41
708 0 days 00:12:00
592 0 days 01:14:35
709 0 days 00:16:45
295 -81 days +09:45:03
1001 0 days 02:46:02
817 0 days 02:46:52
593 0 days 03:57:11
807 0 days 05:28:56
1069 0 days 10:22:24
464 0 days 00:00:36
1 11 days 14:35:31
243 NaT
296 NaT
819 -120 days +13:11:23
1002 0 days 00:10:43
65 NaT
200 0 days 04:49:26
31 2 days 17:09:26
32 -1 days +17:31:12
答案 0 :(得分:1)
您应该能够:
df['TD'] = (df_clean['data__answered_at'] - df_clean['user_entered_details_stage_timestamp__c']).astype('timedelta64[s]')
这将使您以秒为单位进行区别。要将秒数转换为小时数,您可以执行一些简单的数学运算:
df['TD'] = (df['TD']/60)/60
以小时为单位获取时间增量。
答案 1 :(得分:1)
np.timedelta64
:除法将将该列强制转换为该单元。
s/np.timedelta64(1, 'h')
0 -48.000000
1 -48.333333
2 -48.666667
3 -49.000000
4 -49.333333
5 NaN
dtype: float64
DatetimeIndex.total_seconds()
s.dt.total_seconds()/3600 # 3600 seconds in an hour
0 -48.000000
1 -48.333333
2 -48.666667
3 -49.000000
4 -49.333333
5 NaN
dtype: float64
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': pd.date_range('2010-01-01', periods=6, freq='11min'),
'B': pd.date_range('2010-01-03', periods=6, freq='31min')})
df.iloc[-1,:] = pd.NaT
s = df.A-df.B
#0 -2 days +00:00:00
#1 -3 days +23:40:00
#2 -3 days +23:20:00
#3 -3 days +23:00:00
#4 -3 days +22:40:00
#5 NaT
#dtype: timedelta64[ns]