Harry Kalsted
Harry Kalsted

Reputation: 165

Convert HH:MM:SS and MM:SS to seconds in same column in Pandas

I am trying to convert a timestamp string into an integer and having trouble.

The column in my dataframe looks like this:

time
30:03
1:15:02

I have tried df['time'].str.split(':').apply(lambda x: int(x[0]) * 60 + int(x[1])) but that only works if every value in the column is HH:MM:SS but my column is mixed. Some people took 30 minutes to finish the task and some took an hour, etc.

Upvotes: 2

Views: 727

Answers (1)

Andrej Kesely
Andrej Kesely

Reputation: 195438

You can make a custom convert function where you check for time format:

def convert(x):
    x = x.split(":")
    if len(x) == 2:
        return int(x[0]) * 60 + int(x[1])
    return int(x[0]) * 3600 + int(x[1]) * 60 + int(x[2])


df["time"] = df["time"].apply(convert)
print(df)

Prints:

   time
0  1803
1  4502

Upvotes: 2

Related Questions