简体   繁体   中英

Time difference in pandas (from string format to datetime)

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM