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

如何删除DataFrame中夜间时段的行?解决TypeError报错问题

解决思路

错误原因

触发TypeError是因为你的Hour列存在混合数据类型:部分行是datetime.time对象,部分是float数值,两者无法直接比较大小。另外你原代码的筛选逻辑也有问题——用|(或)会保留所有数据,因为任何小时数要么小于22,要么大于4,达不到排除夜间数据的目的。

可行方案

方案1:直接从Timestamp列筛选(推荐)

跳过单独提取Hour列,直接基于Timestamp的小时数过滤,避免类型问题:

# 先确保Timestamp是datetime类型(如果还不是的话)
import pandas as pd
df['Timestamp'] = pd.to_datetime(df['Timestamp'])

# 筛选出4点到22点之间的数据(排除22:00-次日04:00)
# 若要包含4点整和22点整,把>、<改成>=、<=即可
df = df[(df['Timestamp'].dt.hour > 4) & (df['Timestamp'].dt.hour < 22)]

方案2:修复Hour列类型后筛选

如果要保留Hour列,先统一其数据类型再筛选:

import datetime

# 将datetime.time类型转为整数小时,float类型保持不变
df['Hour'] = df['Hour'].apply(lambda x: x.hour if isinstance(x, datetime.time) else x)

# 修正筛选逻辑,保留4点到22点之间的数据
df = df[(df['Hour'] > 4) & (df['Hour'] < 22)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:35:20