时间戳和结果的差异也应该是相同的格式

Posted

技术标签:

【中文标题】时间戳和结果的差异也应该是相同的格式【英文标题】:Difference in timestamp and result should also be in the same format 【发布时间】:2021-08-25 07:56:44 【问题描述】:

我的数据如下所示:

|end_time------------|time----------------- |

|1947-08-15 05:30:00| 2020-09-18 16:44:52|       
|1947-08-15 05:30:00| 2020-09-18 16:45:17|      
|1947-08-15 05:30:00| 2020-10-12 14:26:58|       
|1947-08-15 05:30:00| 2020-10-12 16:10:56|     
|1947-08-15 05:30:00| 2020-10-12 16:11:30|

我想添加一个如下所示的新列:

--end_time----------| time------------------| Difference

|2021-08-16 23:50:26| 2021-08-17 00:20:48| 0:30:22       
|1947-08-15 05:30:00| 2020-09-18 16:45:17|      
|1947-08-15 05:30:00| 2020-10-12 14:26:58|       
|1947-08-15 05:30:00| 2020-10-12 16:10:56|     
|1947-08-15 05:30:00| 2020-10-12 16:11:30|

如何实现?

【问题讨论】:

【参考方案1】:

您在给定/预期中的时间列是不同的。忽略这一点并假设您的意思是两个日期时间列之间的时间差......

创建框架:

import pandas as pd
from datetime import timedelta

df = pd.DataFrame('end_time': 0: '1947-08-15 05:30:00',
  1: '1947-08-15 05:30:00',
  2: '1947-08-15 05:30:00',
  3: '1947-08-15 05:30:00',
  4: '1947-08-15 05:30:00',
 'time': 0: '2020-09-18 16:44:52',
  1: '2020-09-18 16:45:17',
  2: '2020-10-12 14:26:58',
  3: '2020-10-12 16:10:56',
  4: '2020-10-12 16:11:30')
                  
df['end_time'] = pd.to_datetime(df['end_time'])
df['time'] = pd.to_datetime(df['time'])

那么:

def diffTime(x, y):
    a = timedelta(hours=x.hour, minutes=x.minute, seconds=x.minute)
    b = timedelta(hours=y.hour, minutes=y.minute, seconds=y.minute)
    
    return pd.to_datetime(str(a - b),format= '%H:%M:%S' ).time()

df['difference'] = df.apply(lambda x: diffTime(x['time'], x['end_time']), axis=1)

print(df)

输出:

             end_time                   time    difference
0 1947-08-15 05:30:00    2020-09-18 16:44:52      11:14:14
1 1947-08-15 05:30:00    2020-09-18 16:45:17      11:15:15
2 1947-08-15 05:30:00    2020-10-12 14:26:58      08:55:56
3 1947-08-15 05:30:00    2020-10-12 16:10:56      10:39:40
4 1947-08-15 05:30:00    2020-10-12 16:11:30      10:40:41

【讨论】:

以上是关于时间戳和结果的差异也应该是相同的格式的主要内容,如果未能解决你的问题,请参考以下文章

python_时间戳和格式化时间转换封装函数

C语言应用——Unix时间戳和北京时间的相互转换

计算响应时间

xts 格式的时间戳和高频包的列名

使用postgresql格式化时间戳和数字的两个问题

Python time和datetime时间戳和时间字符串相互转换