2024-09-30 06:27:43 发布
网友
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'
invalid literal for int() with base 10: ' 8 Feb 2016 10:31'
两者的值类型都是object
从开工时间到完工时间最简单的方法是什么
您可以使用strptime解析时间格式:
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()返回一个浮点值,因此如果您的目的不能接受,您需要将其转换为整数
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
您需要将它们转换成dtype的datetime,因为它们当前是object(使用df.dtypes来检查这一点)
dtype
datetime
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
您可以使用
strptime
解析时间格式:注意:
total_seconds()
返回一个浮点值,因此如果您的目的不能接受,您需要将其转换为整数您需要将它们转换成
dtype
的datetime
,因为它们当前是object
(使用df.dtypes
来检查这一点)您可以显式执行:
或使用应用程序:
现在不同的是:
相关问题 更多 >
编程相关推荐