python - 在数据框python中格式化时间差
问题描述
我的数据中有两行我想要时差
request Req_Created Req_Closed 0 REQ0079455 15/05/2019 16:51 23/05/2019 20:53 1 REQ0079455 15/05/2019 16:51 23/05/2019 20:53
使用数据框:
df['Req_time_taken'] = pd.to_datetime(df['Req_Closed'], format ='%d/%m/%Y %H:%M') - pd.to_datetime(df['Req_Created'], format ='%d/%m/%Y %H:%M')
df.to_csv ("102.csv")
问题是输出格式不可读
request Req_Created Req_Closed Req_time_taken 0 REQ0079455 15/05/2019 16:51 23/05/2019 20:53 8 days 04:02:00.000000000 1 REQ0079455 15/05/2019 16:51 23/05/2019 20:53 8 days 04:02:00.000000000
如何以以下两种格式显示结果:
request Req_Created Req_Closed Req_time_taken_1 Req_time_taken_2 0 REQ0079455 15/05/2019 16:51 23/05/2019 20:53 8 days 04:02 196 hours 02 minutes 1 REQ0079455 15/05/2019 16:51 23/05/2019 20:53 8 days 04:02 196 hours 02 minutes
请注意 Req_time_taken_1 和 Req_time_taken 的格式差异
解决方案
对于Req_time_taken1
, 使用pandas.Series.str.split
:
df['Req_time_taken1'] = df['Req_time_taken'].astype(str).str.rsplit(':', 1).str[0]
对于Req_time_taken2
, 使用pandas.Series.dt.total_seconds
:
df['Req_time_taken2'] = df['Req_time_taken'].dt.total_seconds().apply(lambda x: '%s hours %s minutes' % (x//3600, x%3600/60))
print(df)
输出:
request Req_Created Req_Closed Req_time_taken \
0 REQ0079455 15/05/2019 16:51 23/05/2019 20:53 8 days 04:02:00
1 REQ0079455 15/05/2019 16:51 23/05/2019 20:53 8 days 04:02:00
Req_time_taken1 Req_time_taken2
0 8 days 04:02 196.0 hours 2.0 minutes
1 8 days 04:02 196.0 hours 2.0 minutes
推荐阅读
- postgresql - SSH 连接到基于 PostgreSQL 的
- django - Next JS getInitialProps Axios.Get Dynamic API Endpoint
- oop - D:如何覆盖扩展类中的不变方法?
- python - 如何使用 discord.py 向 Discord 服务器中的每个人发送消息?
- c# - C# API 通过 id 获取
- lisp - 关于如何通过lisp搜索list中元素出现次数的问题
- groovy - 对于对非 GroovyObjects 的隐式调用,不会在 Closure 的 Delegate 上调用 Groovy 的 missingMethod
- spring - ModelAttribute fields are null
- sorting - How to sort list of objects using comparable in Dart?
- javascript - 我如何强制 express 提供没有文件扩展名的静态 html 文档,内容类型为“text/html”