为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

江户川乱折腾 2022-10-18 19:50:14
我在 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 )



查看完整回答
反对 回复 2022-10-18
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号