为了账号安全,请及时绑定邮箱和手机立即绑定

在数据框python中格式化时间差

在数据框python中格式化时间差

墨色风雨 2022-05-19 18:31:20
我的数据中有两行我想要时差        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 的格式差异
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

对于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  


查看完整回答
反对 回复 2022-05-19
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信