How can we calculate the difference between two date time columns in Python Pandas? Below is the sample table:
starttime | endtime |
---|---|
06:10:42 AM | 06:20:00 AM |
03:45:54 AM | 03:52:27 AM |
Desired result:
starttime | endtime | total |
---|---|---|
06:10:42 AM | 06:20:00 AM | 0:10:00 |
03:45:54 AM | 03:52:27 AM | 0:06:33 |
I tried this script. However, it returns an error:
df_null['Total'] = (df_null['endtime']).sub(df_null['starttime'])
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
CodePudding user response:
Try:
df['total'] = (df[['starttime', 'endtime']].astype(str)
.apply(pd.to_datetime).diff(axis=1)['endtime']
.astype(str).str[-8:])
print(df)
# Output
starttime endtime total
0 06:10:42 AM 06:20:00 AM 00:09:18
1 03:45:54 AM 03:52:27 AM 00:06:33
In python you can't subtract two time
objects
from datetime import time
start = time(3, 45, 54)
end = time(3, 52, 27)
end - start
...
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
CodePudding user response:
df['start'] = pd.to_datetime(df['starttime'])
df['end'] = pd.to_datetime(df['endtime'])
df['total'] = df['end']-df['start']