pandas Timestamp与datetime.datetime对象比较返回True的实现逻辑是什么
比较返回True的原因及逻辑说明
1. 类型兼容基础
Pandas的Timestamp类型本身就是Python标准库datetime.datetime的子类,你可以通过issubclass(pd.Timestamp, datetime.datetime)验证,返回结果为True。这意味着Timestamp天生兼容原生datetime的接口规则,不需要额外做类型适配就可以做运算、比较。
2. 相等比较的底层逻辑
当执行date1 == date2时,会优先调用左侧Timestamp对象实现的__eq__相等判定方法,内部执行逻辑如下:
- 首先尝试将右侧的对比对象转换为
Timestamp类型,原生datetime对象可以无精度损失地完成转换 - 之后对比两个
Timestamp对象内部存储的纳秒级时间戳数值(从1970-01-01 00:00:00 UTC起算的时间偏移量) - 你示例中的两个对象年、月、日、时、分、秒、微秒完全一致,转换后的时间戳数值完全相等,所以最终返回
True
你可以通过以下代码验证上述逻辑:
# 验证继承关系 print(issubclass(pd.Timestamp, datetime.datetime)) # 输出:True # 验证时间戳数值一致 print(date1.timestamp() == date2.timestamp()) # 输出:True
补充注意事项
如果两个时间对象带有不同时区信息,就算字面时间完全一致,转换为UTC时间戳后数值不同,比较结果也会返回False。
内容的提问来源于stack exchange,提问作者ps0604
相关产品推荐
相关产品推荐

