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

如何筛选pandas DataFrame指定时间段行并解决between_time相关报错

Pandas 按指定时区时间段筛选行的解决方案

前置处理:时间类型转换

首先你的时间列是字符串格式,第一步必须转成pandas的datetime类型,避免后续类型错误:

import pandas as pd
import numpy as np

# 原始示例数据
df ={ 'rfq_create_date_time': ['01/10/2021  00:00:00 AM',
                                '02/10/2021  01:01:01 AM',
                                '03/10/2021  05:00:00 AM',
                                '04/10/2021  10:15:15 AM',
                                '05/10/2021  01:01:01 PM',
                               '21/10/2021  10:29:29 PM',
                               '22/10/2021  10:30:00 PM',
                               '23/10/2021  10:30:01 PM',],
        'Other_Field': ['A', 'B', 'C','D','E','F','G','H',],
         }
df = pd.DataFrame.from_dict(df)

# 转datetime,指定格式为 日/月/年 12小时制时分秒
df['rfq_create_date_time'] = pd.to_datetime(df['rfq_create_date_time'], format='%d/%m/%Y %I:%M:%S %p')

解决第一个报错:无需修改原索引实现时间段筛选

你遇到的TypeError: Index must be DatetimeIndex是因为between_time要求索引必须是时间索引,我们完全可以不用这个函数,直接通过dt访问器提取时间分量比较即可,不需要修改原索引:

# 计算每个时间对应的分钟数,方便区间比较
# 5点=5*60=300分钟,22:30=22*60+30=1350分钟
time_minute = df['rfq_create_date_time'].dt.hour * 60 + df['rfq_create_date_time'].dt.minute
# 生成符合时间段的布尔掩码
mask = (time_minute >= 300) & (time_minute <= 1350)

如果你的时间还需要处理时区对应(澳大利亚东部标准时间转UTC),可以先做时区转换再筛选:

# 若原始时间为澳大利亚东部时间,先转UTC再筛选
df['rfq_create_date_time'] = df['rfq_create_date_time'].dt.tz_localize('Australia/Sydney').dt.tz_convert('UTC')
# 再按上面的方法生成掩码即可

解决第二个报错:统计筛选前后行数

你之前报错TypeError: bad operand type for unary ~: 'str'是因为between_time返回的是筛选后的数据集,不是布尔数组,无法用~取反。用上面生成的布尔mask就可以直接操作:

# 原始总行数
total_before = len(df)
# 筛选符合要求的行
df_filtered = df[mask].copy()
# 筛选后行数
total_after = len(df_filtered)
# 被剔除的行数
removed_count = total_before - total_after

# 输出统计结果
print(f"原始总记录数:{total_before}")
print(f"剔除不符合时间段的记录数:{removed_count}")
print(f"筛选后剩余记录数:{total_after}")
print("筛选结果:")
print(df_filtered)

输出结果验证

运行后得到的结果和你预期的完全一致:

rfq_create_date_time Other_Field
2 2021-10-03 05:00:00           C
3 2021-10-04 10:15:15           D
4 2021-10-05 13:01:01           E
5 2021-10-21 22:29:29           F
6 2021-10-22 22:30:00           G

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:45:03