如何使用Pandas计算预期时间与实际时间的常规时差?
计算符合常规认知的预期与实际时间差(Pandas)
我的DataFrame包含两个时间戳列,需要新增第三列存储符合常规认知的时差:早到为正数值,迟到为负数值,直接体现与预期时间的偏差分钟数。
测试案例与问题
早到场景(结果符合预期)
预期时间为08:00,实际时间为07:30(早到30分钟):
import pandas as pd t1 = pd.to_datetime('1/1/2022 08:00') # 预期时间 t2 = pd.to_datetime('1/1/2022 07:30') # 实际时间 pd.Timedelta(t1-t2) # 输出: Timedelta('0 days 00:30:00') pd.Timedelta(t1-t2).seconds / 60.0 # 转换为分钟 # 输出: 30.0
这个结果符合常规认知,早到30分钟显示为正30。
迟到场景(结果不符合预期)
预期时间为08:00,实际时间为08:30(迟到30分钟):
t1 = pd.to_datetime('1/1/2022 08:00') # 预期时间 t2 = pd.to_datetime('1/1/2022 08:30') # 实际时间 pd.Timedelta(t1-t2) # 输出: Timedelta('-1 days +23:30:00') pd.Timedelta(t1-t2).seconds / 60.0 # 转换为分钟 # 输出: 1410.0
这里得到的1410分钟是23.5小时,完全不符合常规认知的“迟到30分钟”(应该显示为-30)。
临时解决方法
我发现可以通过减去24小时对应的分钟数(1440分钟)得到正确结果:
(pd.Timedelta(t1-t2).seconds / 60.0) - 1440 # 转换为符合常规的分钟数 # 输出: -30.0
疑问
我知道可以自定义函数并使用apply()处理整列数据,但这应该是个常见需求,不过我在Pandas的Timedelta文档里没找到对应的原生方法。有没有更简洁的Pandas原生方式实现这个需求?
内容的提问来源于stack exchange,提问作者xtian
相关产品推荐
相关产品推荐

