遍历具有时间值并返回秒的熊猫数据框列

我在 pandas 数据框中有一列,如下所示:


Time:

16:45:15

16:45:31

16: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 循环中使用它时,它会给出这个错误,关于如何解决它的任何想法?


江户川乱折腾
浏览 111回答 1
1回答

月关宝盒

In [24]: df['TimeInSeconds'] = df['Time'].apply(lambda x : x.hour *3600 + x.minute * 60 + x.second )看起来您的列是 datetime.time 类型,因此您可以直接使用它的属性,例如小时、分钟、秒,而不是像上面那样进行字符串拆分。希望能帮助到你 :)编辑:如果是字符串,我们可以转换所有时间对象,然后使用 applyimport datetimeIn [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 )
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python