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

Python查找pandas DataFrame时间戳列忽略毫秒的指定日期时间

问题根源

判断失效是三个核心问题共同导致的:

  • 类型不匹配:你用于匹配的对象是pd.Timestamp类型,但df_processed_timestamps['time']列存储的是带T分隔符、带9位纳秒小数的ISO格式字符串,Python判断相等时会先校验类型,类型不同就算值看起来一致也会返回False。
  • 格式错误:你写的strftime格式化规则"%Y-%m-%d, %H:%M:%S"里,日期和时间之间多了一个多余的逗号,属于不必要的格式偏差。
  • 精度未对齐:就算两边类型转成一致,DataFrame里的时间带毫秒/纳秒位,你没有做截断处理,整秒时间和带小数位的时间也无法直接匹配。
修复方案

不要混用时间对象和字符串做匹配,统一把两边转成相同的时间类型、对齐到秒级精度再判断,代码如下:

import pandas as pd
from datetime import datetime

last_timestamp = 1611903555682
# 1. 生成目标时间,截断到秒级
target_ts = pd.Timestamp(datetime.fromtimestamp(last_timestamp / 1000)).floor("s")

# 2. 把DataFrame的时间列临时转成datetime类型,统一截断到秒级(不会修改原列数据)
df_ts_col = pd.to_datetime(df_processed_timestamps["time"]).dt.floor("s")

# 3. 做存在性判断
if target_ts in df_ts_col.values:
    print("Value is already in dataframe.")
    return

注:如果后续需要频繁对该时间列做筛选、计算操作,建议直接把列转成datetime类型永久存储,比存字符串的处理效率高很多,转换代码为df_processed_timestamps['time'] = pd.to_datetime(df_processed_timestamps['time'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:55:05