Pandas分组统计客流后如何为缺失的小时维度行补充计数0
实现方案
直接通过全量维度表左关联现有统计结果即可实现,步骤和代码如下:
- 先完成原始数据的分组统计,得到各时段的到店人数
- 提取数据中所有出现过的(月份、日期)组合,为每个组合拼接0-23共24个小时,生成全量时段维度表
- 全量维度表和统计结果左关联,缺失的计数值填充为0
import pandas as pd # 1. 原始分组统计,假设原始访客表为raw_df,统计后计数字段命名为visitor_count stat_df = raw_df.groupby(['月份', '日期', '小时'], as_index=False)['姓名'].count().rename(columns={'姓名': 'visitor_count'}) # 2. 生成全量时段维度表 # 提取所有不重复的日期组合 unique_dates = stat_df[['月份', '日期']].drop_duplicates() # 为每个日期添加0-23小时 unique_dates['小时'] = [list(range(24)) for _ in range(len(unique_dates))] full_time_dim = unique_dates.explode('小时', ignore_index=True) # 3. 左关联补全值 result_df = full_time_dim.merge( stat_df, on=['月份', '日期', '小时'], how='left' ).fillna({'visitor_count': 0}) # 可选:将计数字段转为整数,按时间排序 result_df['visitor_count'] = result_df['visitor_count'].astype(int) result_df = result_df.sort_values(['月份', '日期', '小时'], ignore_index=True)
如果你的数据包含年份字段,只需在分组、维度表生成、关联的字段中增加年份字段即可,逻辑完全一致。
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

