Python Forum
Getting the difference between two times in a Data Frame
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Getting the difference between two times in a Data Frame
#1
I have a Pandas Dataframe where two columns contain times (stored as strings).

I want to get the minimum difference (hours, minutes, seconds) between both columns (Column1 and Column2).

I have converted both columns to times as per below and stored them in different dataframes:

Column1Times = pd.to_datetime(myDataFrame['Column1'], format='%H:%M:%S').dt.time
Column2Times = pd.to_datetime(myDataFrame['Column2'], format='%H:%M:%S').dt.time
To get the minimum time difference I use below, but I get
Error:
operand "-" not suuported.
print("Minimum difference is : ", (Column1Times - Column2Times).min())
Can someone please tell me what I am doing wrong?
Reply
#2
You can only find differences for datetime objects, try this:

(Column1Times - Column2Times).apply(lambda x: abs(x.days * 86400 * 10**6 + x.seconds * 10**6 + x.microseconds)%(86400 * 10**6) / 10**6) 
# note absolute values used (result in seconds)
Reply
#3
I tried following:

>>> import pandas as pd
>>> Column1Times = pd.to_datetime('10:10:10', format='%H:%M:%S')
>>> Column2Times = pd.to_datetime('11:12:13', format='%H:%M:%S')
>>> delta = Column2Times - Column1Times
>>> delta
Timedelta('0 days 01:02:03')
>>> delta.seconds
3723
>>> delta.total_seconds()      
3723.0
>>> delta.components
Components(days=0, hours=1, minutes=2, seconds=3, milliseconds=0, microseconds=0, nanoseconds=0)
>>> delta.components.hours, delta.components.minutes, delta.components.seconds
(1, 2, 3)
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#4
I am trying to remember why I did create so sophisticated answer, but no success; In any case, I think that the expected by the OP answer would be something like min(delta.seconds, (-delta).seconds), where delta is difference between two datetime objects. So, the difference between two times 23:59:00 and 00:00:01 should be 61 sec.
Reply
#5
(Mar-21-2019, 10:54 AM)scidam Wrote: I am trying to remember why I did create so sophisticated answer, but no success;

Been there, done that Smile
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Grouping in pandas/multi-index data frame Aleqsie 3 606 Jan-06-2024, 03:55 PM
Last Post: deanhystad
  Filtering Data Frame, with another value NewBiee 9 1,329 Aug-21-2023, 10:53 AM
Last Post: NewBiee
  Exporting data frame to excel dyerlee91 0 1,604 Oct-05-2021, 11:34 AM
Last Post: dyerlee91
  Pandas Data frame column condition check based on length of the value aditi06 1 2,655 Jul-28-2021, 11:08 AM
Last Post: jefsummers
  Adding a new column to a Panda Data Frame rsherry8 2 2,082 Jun-06-2021, 06:49 PM
Last Post: jefsummers
  grouped data frame glitter 0 1,576 Feb-02-2021, 11:22 AM
Last Post: glitter
  how to filter data frame dynamically with the columns psahay 0 2,377 Aug-24-2020, 01:10 PM
Last Post: psahay
  Dropping Rows From A Data Frame Based On A Variable JoeDainton123 1 2,185 Aug-03-2020, 02:05 AM
Last Post: scidam
  How to shift data frame rows of specified column Mekala 0 1,858 Jul-21-2020, 02:42 PM
Last Post: Mekala
  HELP- DATA FRAME INTO TIME SERIES- BASIC bntayfur 0 1,732 Jul-11-2020, 09:04 PM
Last Post: bntayfur

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020