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

如何在Pandas中筛选时间早于18:30的DataFrame行?

Pandas筛选早于下午6:30的行解决方案

你的代码报错是因为time列是字符串类型,不是Pandas的datetime格式,无法直接通过.dt.time调用时间属性。按以下步骤即可实现需求:

1. 转换时间列格式

先把字符串格式的时间转为Pandas可识别的datetime类型,它会自动处理AM/PM:

import pandas as pd

# 初始化数据
df = pd.DataFrame([["A","11:40 AM"],["B","12:51 PM"],["C","6:33 PM"],["D","11:13 AM"],["E","7:13 PM"]],columns=["id","time"])
# 转换为datetime类型
df['time'] = pd.to_datetime(df['time'], format='%I:%M %p')

2. 筛选符合条件的行

有两种简单的筛选方式:

  • 用datetime.time对象比较:
    from datetime import time
    filtered_df = df[df['time'].dt.time < time(18, 30)]
    
  • 直接与字符串时间比较(Pandas会自动解析):
    filtered_df = df[df['time'] < '18:30:00']
    

3. 恢复原时间格式(可选)

如果需要把datetime类型转回原来的AM/PM字符串格式,执行:

filtered_df['time'] = filtered_df['time'].dt.strftime('%I:%M %p')

最终结果

处理后的filtered_df内容如下:

id    time
A  11:40 AM
B  12:51 PM
D  11:13 AM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:05:12