将天和时间(小时x分钟x秒)转换为仅时间

2024-09-29 21:50:44 发布

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

我有一个数据帧,我在其中对两个不同的日期进行区分,以获得小时和分钟的差异,例如:

 start_date = '2018-07-03 16:03:00'
 data_final = '2018-07-05 00:00:00'
 duration = data_final - start_date

我要寻找的结果是'31:57:00',或者两个日期之间的总时差。但我得到的结果是:'1天,7:57:00'(每24小时写为1天)。在

我尝试用以下语句将其转换为XMinutesHours格式:

^{pr2}$

但我得到了一个错误:

ValueError: time data '1 day, 7:57:00' does not match format '% H:% M:% S'

有什么想法吗?在


Tags: 数据datadate格式错误差异语句start
3条回答

你需要用小时、分钟和秒来计算当量, 您可以实现一个函数来获取此值,例如:

from datetime import datetime

def get_duration(duration):
    hours = int(duration / 3600)
    minutes = int(duration % 3600 / 60)
    seconds = int((duration % 3600) % 60)
    return '{:02d}:{:02d}:{:02d}'.format(hours, minutes, seconds)

format_str = '%Y-%m-%d %H:%M:%S'
start_date_str = '2018-07-03 16:03:00'
end_date_str = '2018-07-05 00:00:00'

start_date = datetime.strptime(start_date_str, format_str)
end_date = datetime.strptime(end_date_str, format_str)
duration = (end_date - start_date).total_seconds()

print(get_duration(duration))

首先使用pd.to_日期时间. 在

假设您有一个数据帧df,其中有一列start_time。在

import pandas as pd

df['start_time'] = pd.to_datetime(df['start_time']
df['end_time'] = pd.to_datetime(df['end_time']

df['time_diff'] = (df.end_time - df.start_time) #gets the time in hours

如果要将其转换为小时,请使用:

^{pr2}$

但这不会以H:M:S格式给出。在

您拥有的是一个datetime.timedelta对象,它是从两个datetime.datetime对象的子集合中得到的。这个问题已经回答了here。在

顺便说一句,当你真的想用strftime时,你似乎在试图使用strptimestrptimep将字符串转换为datetime.datetime对象(因此称为p),而strftimefdatetime.datetime对象格式化为字符串(因此,f)。在

相关问题 更多 >

    热门问题