I have the following column
Time
2:00
00:13
1:00
00:24
in object format (strings). This time refers to hours and minutes ago from a time that I need to use as a start: 8:00
(it might change; in this example is 8:00).
Since the times in the column Time
are referring to hours/minutes
ago, what I would like to expect should be
Time
6:00
07:47
7:00
07:36
calculated as time difference (eg 8:00 - 2:00
). However, I am having difficulties in doing this calculation and transform the result in a datetime (keeping only hours and minutes). I hope you can help me.
Since the Time
columns contains only Hour:Minute
I suggest using timedelta
instead of datetime
:
df['Time'] = pd.to_timedelta(df.Time+':00')
df['Start_Time'] = pd.to_timedelta('8:00:00') - df['Time']
Output:
Time Start_Time
0 02:00:00 06:00:00
1 00:13:00 07:47:00
2 01:00:00 07:00:00
3 00:24:00 07:36:00
you can do it using pd.to_datetime
.
ref = pd.to_datetime('08:00') #here define the hour of reference
s = ref-pd.to_datetime(df['Time'])
print (s)
0 06:00:00
1 07:47:00
2 07:00:00
3 07:36:00
Name: Time, dtype: timedelta64[ns]
This return a series, that can be change to a dataframe with s.to_frame()
for example
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.