减去时间来计算持续时间

2024-09-30 06:27:43 发布

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

idata_df['Total Time'] = (data_df['finsihed']).astype(int) - (data_df['Commencement Time']).astype(int)

返回值错误:invalid literal for int() with base 10: ' 8 Feb 2016 10:31'

两者的值类型都是object

从开工时间到完工时间最简单的方法是什么


Tags: dffordatatime错误时间inttotal
2条回答

您可以使用strptime解析时间格式:

from datetime import datetime
FMT = "%d %b %Y  %H:%M"
start = datetime.strptime(data_df['Commencement Time'], FMT)
stop = datetime.strptime(data_df['finished'], FMT)
total_time = (stop - start).total_seconds()

注意:total_seconds()返回一个浮点值,因此如果您的目的不能接受,您需要将其转换为整数

df = pd.DataFrame(np.transpose([[' 8 Feb 2016  10:31', ' 8 Feb 2016  12:31', ' 8 Feb 2016  17:31'],
                  [' 10 Feb 2016  10:31', ' 11 Feb 2016  12:31', ' 13 Feb 2016  12:31']]), columns=['Start','Stop'])
print(df)

                Start                 Stop
0   8 Feb 2016  10:31   10 Feb 2016  10:31
1   8 Feb 2016  12:31   11 Feb 2016  12:31
2   8 Feb 2016  17:31   13 Feb 2016  12:31

您需要将它们转换成dtypedatetime,因为它们当前是object(使用df.dtypes来检查这一点)

您可以显式执行:

df.Start = pd.to_datetime(df.Start)
df.Stop = pd.to_datetime(df.Stop)

或使用应用程序:

df = df.apply(lambda x: pd.to_datetime(x))

现在不同的是:

df['Total Time'] = df.Stop - df.Start

print(df)

  Start               Stop       Total Time
0 2016-02-08 10:31:00 2016-02-10 10:31:00 2 days 00:00:00
1 2016-02-08 12:31:00 2016-02-11 12:31:00 3 days 00:00:00
2 2016-02-08 17:31:00 2016-02-13 12:31:00 4 days 19:00:00

相关问题 更多 >

    热门问题