Home > Blockchain >  Python change time format
Python change time format

Time:12-22

I'm trying to change the time format of my data that's now in form of 15:41:28:4330 or hh:mm:ss:msmsmsms to seconds.

I browsed through some of the pandas documentation but can't seem to find this format anywhere.

Would it be possible to simply calculate the seconds from that time format row by row?

CodePudding user response:

You'll want to obtain a timedelta and take the total_seconds method to get seconds after midnight. So you can parse to datetime first, and subtract the default date (that will be added automatically). Ex:

#1 - via datetime

import pandas as pd

df = pd.DataFrame({'time': ["15:41:28:4330"]})
df['time'] = pd.to_datetime(df['time'], format='%H:%M:%S:%f')
df['sec_after_mdnt'] = (df['time']-df['time'].dt.floor('d')).dt.total_seconds()

df
                     time  sec_after_mdnt
0 1900-01-01 15:41:28.433       56488.433

Alternatively, you can clean your time format and parse directly to timedelta:

#2 - str cleaning & to timedelta

df = pd.DataFrame({'time': ["15:41:28:4330"]})
# last separator must be a dot...
df['time'] = df['time'].str[::-1].str.replace(':', '.', n=1, regex=False).str[::-1]
df['sec_after_mdnt'] = pd.to_timedelta(df['time']).dt.total_seconds()

df
            time  sec_after_mdnt
0  15:41:28.4330       56488.433
  • Related