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

Python筛选单日24小时均有数据的对应全部行实现方法问询

Pandas 大数据量下筛选完整24小时日期行方案

核心逻辑:先按年、月、日分组统计每个日期的有效小时数,筛选出小时数等于24的日期,再关联原表拿到对应全部行,全程用向量化操作保证执行效率。

基础实现代码

import pandas as pd

# 第一步:按日期分组,统计每个日期的唯一小时数,筛选出小时数恰好为24的合法日期
valid_dates = df.groupby(['Year', 'Month', 'Day'])['Hour'].nunique()
valid_dates = valid_dates[valid_dates == 24].reset_index()[['Year', 'Month', 'Day']]

# 第二步:用内连接匹配原表,得到合法日期对应的全部行,执行效率远高于逐行判断
result = df.merge(valid_dates, on=['Year', 'Month', 'Day'], how='inner')

性能优化技巧

  • 若确认数据中同一个日期的同一小时不会出现重复行,可以把第一步的nunique()替换为count(),省去去重计算开销,速度提升30%以上
  • 数据体量特别大的场景,可以提前将分组字段转为分类类型,降低分组计算的内存占用和耗时:
for col in ['Year', 'Month', 'Day']:
    df[col] = df[col].astype('category')

注意事项

如果你的数据存在同一个日期同一个小时有多条记录的场景,必须使用nunique()做小时数统计,避免把小时数不足24的日期误判为合法日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:48:03