pandas如何计算两日期列差值转小时、判断差值是否超过20小时
问题原因
你计算得到的Transf1-Coleta列属于pandas *Timedelta(时间差)*类型,既不需要也不能用pd.to_datetime转换为日期类型,同时也无法直接和字符串格式的时间做大小比较。
正确实现方法
两种常用实现方案可选:
方案1:转换为总小时数比较
将时间差转换为总小时数后直接和阈值20比较:
# 大于20小时返回True,否则返回False,负数差值自动判定为不满足 df['is_over_20h'] = df['Transf1-Coleta'].dt.total_seconds() / 3600 > 20
方案2:直接和Timedelta阈值比较
构造20小时的Timedelta对象直接做比较,代码更直观:
df['is_over_20h'] = df['Transf1-Coleta'] > pd.Timedelta(hours=20)
补充说明
如果你的需求是判断两个时间的绝对差值超过20小时,忽略先后顺序,只需对差值取绝对值后再比较即可:
df['abs_over_20h'] = abs(df['Transf1-Coleta']) > pd.Timedelta(hours=20)
内容的提问来源于stack exchange,提问作者João Galdino
相关产品推荐
相关产品推荐

