Python中Pandas DataFrame相同时间戳对比返回False问题求解
问题解答
代码错误点
你错误使用了Python身份运算符is做时间戳等值判断,替换为等值运算符==即可解决问题。
根本原因
is的作用是判断两个变量是否指向内存中的同一个对象,对比的是对象内存地址,而不是值。你从两个不同DataFrame中提取的时间戳属于独立生成的两个pandas.Timestamp实例,即便值完全相同,内存地址也不一样,因此is判断返回False。==的作用是判断两个对象的实际值是否相等,符合你做时间等值判断的需求。
修正代码
if covid_traffic_data.at[22, '시점'] == covid_confirmed_data.at[1, 'date']: print(True) else: print(False)
额外注意事项
如果替换为==后仍然返回False,可检查两个时间戳的时区属性是否一致:分别打印两个对象的.tz属性,若一个带时区一个不带,或时区规则不同,也会导致等值判断失败,需要先将二者转为相同时区再做判断,示例如下:
# 统一转为无时区时间再对比 t1 = covid_traffic_data.at[22, '시점'].tz_localize(None) t2 = covid_confirmed_data.at[1, 'date'].tz_localize(None) print(t1 == t2)
内容的提问来源于stack exchange,提问作者NcGYBer
相关产品推荐
相关产品推荐

