我在 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
提交
取消