如何在python中将时间列的值从mm:ss格式化为hh:mm:ss?例如21:34至00:21:34

问题描述 投票:1回答:1

在时间列中,有类似值:

Time
========
 59:47
 59:52
 59:53
 59:55
 1:00:01
 1:00:03
 1:00:12

现在,我需要重塑hh:mm:ss之类的值

我尝试过这样的事情:

time_list = df7['Time'].tolist()

for i in time_list:
    print(datetime.strptime(i,'%H:%M:%S'))

[ValueError:时间数据'36:21'与格式'%H:%M:%S'不匹配”

python time python-3.7 timedelta
1个回答
0
投票

如果您可以将值规范化为始终为mm:sshh:mm:ss的形式,并且不包含其他任何元素,那么就像执行以下操作一样简单:

for time_string in time_list:
    if time_string.count(':') == 1:
        time_string = '00:' + time_string
    print(datetime.strptime(time_string,'%H:%M:%S'))

让我们考虑问题中发布的样本数据:

time_list = ['59:47', '59:52', '59:53', '59:55', '1:00:01', '1:00:03', '1:00:12']

这是输出的内容:

1900-01-01 00:59:47
1900-01-01 00:59:52
1900-01-01 00:59:53
1900-01-01 00:59:55
1900-01-01 01:00:01
1900-01-01 01:00:03
1900-01-01 01:00:12

但是,我认为由于这是时间数据(不包含日期成分),因此time.strptime()会是更好的选择:只需使用time.strptime()而不是datetime.strptime()来获得类似的内容:

time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=59, tm_sec=47, tm_wday=0, tm_yday=1, tm_isdst=-1)

希望有帮助! :)

© www.soinside.com 2019 - 2024. All rights reserved.