时间戳和结果的差异也应该是相同的格式
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
【讨论】:
以上是关于时间戳和结果的差异也应该是相同的格式的主要内容,如果未能解决你的问题,请参考以下文章