You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas中DateTime列日期比较逻辑失效问题

问题原因与解决方案

你的代码之所以输出"No",核心问题是类型不匹配:r['PKUP_DTT']是datetime对象,而你用来比较的是字符串'2022-12-31 23:58:00',不同类型的对象直接用==比较会返回False。

解决方法1:将字符串转为datetime对象再比较

先把目标日期字符串转换成和列中一致的datetime类型,再进行比较:

from datetime import datetime

# 把目标字符串转为datetime对象
target_datetime = datetime.strptime('2022-12-31 23:58:00', '%Y-%m-%d %H:%M:%S')

for i, r in df.iterrows():
    if r['PKUP_DTT'] == target_datetime:
        print("yes")
    else:
        print("No")

解决方法2:用Pandas向量式操作(更高效)

iterrows()效率极低,尤其是数据量大的时候,推荐直接用Pandas的原生方法处理:

import pandas as pd

target_datetime = pd.to_datetime('2022-12-31 23:58:00')

# 检查列中是否存在该日期
if df['PKUP_DTT'].eq(target_datetime).any():
    print("yes")
else:
    print("No")

# 如果需要筛选出符合条件的行
matching_data = df[df['PKUP_DTT'] == target_datetime]
if not matching_data.empty:
    print("yes")

不推荐的方法:将DateTime列转为字符串

虽然可以把PKUP_DTT列转为字符串再比较,但这种方法容易因为格式差异(比如时区、毫秒数)导致匹配失败,除非你能确保列的字符串格式和目标完全一致:

df['PKUP_DTT_str'] = df['PKUP_DTT'].dt.strftime('%Y-%m-%d %H:%M:%S')
for i, r in df.iterrows():
    if r['PKUP_DTT_str'] == '2022-12-31 23:58:00':
        print("yes")
    else:
        print("No")

内容的提问来源于stack exchange,提问作者Tanwir Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:15:42