'In Pyton im tring to convert a whole dataset of hr:min:secs into seconds

I'm trying to get the function i made to apply to columns I specified by separating in the iloc function

# Import useful packages for data science
import numpy as np
import pandas as pd
import os
import sys
import time
import datetime
import time

#setting the triathlone data set as TD

TD=pd.read_csv("/Applications/TriathloneData.csv")


TD

def hms_to_seconds(t):
    if(type(t) != str):
        return np.NaN
    else:
        h, m, s = [int(i) for i in t.split(':')]
        return 3600*h + 60*m + s

# first I'll separate each column I need to apply the function to
TDdf = pd.DataFrame(TD)
TDdfTime = TDdf.iloc[:,6:12]

TDdfTime


Solution 1:[1]

You can do this pretty easily with the .apply() function available to pandas DataFrames. You can find your answer here: https://stackoverflow.com/a/34962199/8222441. Instead of using a lambda however, you can just pass your function. Hope this helps!

Solution 2:[2]

You can convert your date column to Datetime object and use total_seconds of timedelta object to get total seconds

df['date'] = pd.to_datetime(df['date'])
df['seconds'] = df['date'].dt.time.astype(str).apply(pd.to_timedelta).dt.total_seconds()

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Amit Maraj
Solution 2 Ynjxsjmh