changing format of a string to calculate duration in python

Question:

I’m trying to calculate the duration time from column start time and end time. I have them in this format as string ’00:00:00′
I’m thinking of to replacing every ‘:’ with ‘.’ so I can easily subtract them as double type to calculate the duration.

To achieve this I tried this code:

startT=list()
endT=list()
for ind,row in df.iterrows():
 startT=(dataframe['Chat Session Initiation Time'].astype(str).str[10:19]).replace(':','.')
 endT=(dataframe['Chat Session End Time'].astype(str).str[10:19]).replace(':','.')

the substring I’m doing is to get the time alone from the text.
this code does not replace the characters as I wished. I need help with that.

and If you have a better way to calculate the duration let me know kindly

Answers:

import pandas as pd

data = [
    [ 0, "00:00:00", "00:01:19" ],
    [ 1, "00:15:50", "00:45:19" ],
    [ 2, "01:30:05", "02:01:19" ],
    [ 3, "04:29:10", "05:00:00" ]
]

df = pd.DataFrame(data, columns=['index','start','stop'])
print(df)
df['start'] = pd.to_timedelta(df['start'])
df['stop'] = pd.to_timedelta(df['stop'])
df['diff'] = df['stop'] - df['start']
print(df)

Output:

   index     start      stop
0      0  00:00:00  00:01:19
1      1  00:15:50  00:45:19
2      2  01:30:05  02:01:19
3      3  04:29:10  05:00:00
   index           start            stop            diff
0      0 0 days 00:00:00 0 days 00:01:19 0 days 00:01:19
1      1 0 days 00:15:50 0 days 00:45:19 0 days 00:29:29
2      2 0 days 01:30:05 0 days 02:01:19 0 days 00:31:14
3      3 0 days 04:29:10 0 days 05:00:00 0 days 00:30:50

You can also use to_datetime, but that assumes today’s date. The math still works out, it just prints other than what you expect.

Answered By: Tim Roberts
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.