如何计算时间格式不一致的两个数据集的delta time时间差
问题原因
你在处理第二个数据集的时候,只把时分秒列传入了pd.to_datetime(),pandas会自动给这些时间补全为当前执行代码年份的1月1日,和第一个数据集的年月日完全不匹配,自然没法正确计算时间差。
解决方案
把第一个数据集的年月日同步补到第二个数据集的时间列里再转日期格式就行,修改后的完整代码如下:
import pandas as pd # 处理第一个数据集 names = ["year","month","day","hour","minute","second", "d1", "d2", "d3", "d4"] ev = pd.read_csv('event.txt',sep='\t',names=names) ev_time= ev[['year', 'month', 'day', 'hour', 'minute', 'second']] t_a=pd.to_datetime(ev_time) # 处理第二个数据集:补充和第一个数据集一致的年月日 names=["p1", "p2", "hour", "minute", "second"] arr = pd.read_csv('arrival.txt',sep='\t',names=names) # 直接从第一个数据集取年、月、日列加到第二个数据集上 arr_time = pd.concat([ev[['year', 'month', 'day']], arr[['hour', 'minute', 'second']]], axis=1) t_b=pd.to_datetime(arr_time) # 计算秒差 tt = t_a - t_b a = tt.dt.total_seconds()
注意事项
- 要保证两个数据集的行数完全对应,否则
pd.concat拼接的时候会出现错位或者空值 - 如果第二个数据集的某行时间比第一个数据集对应行的时间晚,得到的秒差会是负数,符合实际逻辑
内容的提问来源于stack exchange,提问作者Adnan
相关产品推荐
相关产品推荐

