将时间跨度字符串转换为实数形式的秒

2024-10-03 06:31:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一只熊猫,带时间跨度格式的字符串日月时分:毫米:不锈钢NNNNN。正在寻找将其转换为秒的方法,这些秒可以存储为实数。 数据帧:

duration {'13:11:21.2600000','12.18:52:17.0640000','12.18:52:17.0640000','4.07:28:42.7160000','4.09:30:34.1700000'}

我试过使用:

for dur in duration:
    secs= dur.total_seconds()
    rlist.append(secs)

但出现以下错误:

AttributeError: 'datetime.time' object has no attribute 'total_seconds'

使用regex成功地使用了这种低效的方法:

df=df.astype(str)
daySearch="\.\d\d:"
sep='.'
for i in duration:
    if re.search(daySearch,i):
       day,dur,micros=i.split('.')
       h, m, s = dur.split(':')
       secs_int=(int(day) * 86400) + (int(h) * 3600 + int(m) * 60 + int(s))
       secs=str(secs_int)+sep+micros
       print(secs)
    else:
        dur, micros = i.split('.')
        h, m, s = dur.split(':')
        secs_int = int(h) * 3600 + int(m) * 60 + int(s)
        secs = str(secs_int) + sep + micros
        print(secs)

Tags: 方法indfforsepinttotalsplit
1条回答
网友
1楼 · 发布于 2024-10-03 06:31:19

首先使用strtime将字符串转换为日期时间实例

datetime.strptime(date_string, format)

然后将参考时间转换为总秒。你知道吗

(dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()

相关问题 更多 >