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

Pandas是否有功能可每日从datetime列提取指定时间戳?

解决方案

步骤1:转换时间列格式

首先需要将timestamp列转换为Pandas内置的datetime类型,才能方便后续的时间维度筛选:

import pandas as pd
# 若原timestamp列为字符串格式,执行该转换
df['timestamp'] = pd.to_datetime(df['timestamp'])

步骤2:基础筛选逻辑(固定匹配16:00:03)

如果确认所有日期下最接近16点的tick固定为16:00:03,可以直接匹配时间部分,无需手动录入每日日期:

# 定义目标时分秒
target_time = pd.to_datetime("16:00:03").time()
# 直接筛选全数据集中所有日期16:00:03的记录
df_filtered = df[df['timestamp'].dt.time == target_time]

步骤3:追加筛选条件

根据你的需求二选一即可:

方案A:按指定月份筛选

# 示例为筛选2021年8月的记录,修改目标月份即可适配其他月份
target_month = "2021-08"
df_filtered = df[
    (df['timestamp'].dt.time == target_time) &
    (df['timestamp'].dt.to_period('M') == target_month)
]

方案B:按起止日期范围筛选

# 示例为筛选2021-08-02到2021-08-06的记录,修改起止值即可适配其他范围
start_date = "2021-08-02"
end_date = "2021-08-06"
df_filtered = df[
    (df['timestamp'].dt.time == target_time) &
    (df['timestamp'].between(start_date, end_date, inclusive='both'))
]

拓展通用方案:自动取每日最接近16点的tick

如果存在部分日期的最接近16点tick秒数不固定的情况(比如你给出的样例中9月的tick秒数为02),可以用下面的逻辑自动匹配,不需要固定目标时间:

# 生成对应日期的16点整对照时间
df['date'] = df['timestamp'].dt.date
df['target_datetime'] = pd.to_datetime(df['date'].astype(str) + " 16:00:00")
# 计算每条记录与当日16点的时间差绝对值
df['time_diff'] = abs(df['timestamp'] - df['target_datetime'])
# 按日期分组,取每个日期下时间差最小的记录
df_filtered = df.sort_values('time_diff').groupby('date').head(1).sort_values('timestamp').drop(columns=['date', 'target_datetime', 'time_diff'])
# 同样可以在该逻辑基础上追加上述的月份/日期范围筛选条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:18:03