我在 pandas 數據框中有一列,如下所示:Time:16:45:1516:45:3116:45:59..我想將這些時間值轉換為秒,我做了以下事情:def get_sec(arr): h,m,s = arr.split(':') return int(h) * 3600 + int(m) * 60 + int(s)sec_val = []for i in range(len(df['Time'])): sec_val.append(get_sec(df['Time'][i]))它給出了這個錯誤:'datatime.time' object has no attribute 'split'雖然如果我對一個字符串使用相同的代碼,它可以工作,但是當我在 for 循環中使用它時,它會給出這個錯誤,關于如何解決它的任何想法?
1 回答

月關寶盒
TA貢獻1772條經驗 獲得超5個贊
In [24]: df['TimeInSeconds'] = df['Time'].apply(lambda x : x.hour *3600 + x.minute * 60 + x.second )
看起來您的列是 datetime.time 類型,因此您可以直接使用它的屬性,例如小時、分鐘、秒,而不是像上面那樣進行字符串拆分。希望能幫助到你 :)
編輯:
如果是字符串,我們可以轉換所有時間對象,然后使用 apply
import datetime
In [38]: df['Time' ] = df['Time'].astype(str).apply(lambda x : datetime.datetime.strptime(x, '%H:%M:%S' ).time() )
In [39]: df['TimeInSeconds'] = df['Time'].apply(lambda x : x.hour *3600 + x.minute * 60 + x.second )
添加回答
舉報
0/150
提交
取消