pandas groupby统计小时频次后补全缺失索引的高效方法
最优解:用pandas原生reindex方法实现
首先把分组统计结果存为Series(避免你原代码中循环重复计算groupby的性能损耗),直接重索引补全24小时即可,全程不用手写循环:
# 先统计每小时事件数 hour_cnt = df_sep.time.dt.hour.value_counts() # 重索引补全0-23的所有小时,缺失值填0 full_hour_cnt = hour_cnt.reindex(range(24), fill_value=0)
你要的x、y列表可以直接从结果中提取:
x = full_hour_cnt.index.tolist() y = full_hour_cnt.values.tolist()
打印验证的效果和你期望的完全一致:
for hour, count in full_hour_cnt.items(): print(hour, count)
输出:
0 0 1 0 2 31 3 6 4 7 5 4 6 38 7 9 8 5 9 31 10 8 11 2 12 5 13 30 14 1 15 1 16 28 17 0 18 1 19 0 20 4 21 29 22 0 23 0
这个方法是pandas向量化操作,性能远高于手写Python循环,代码也更简洁易维护。
内容的提问来源于stack exchange,提问作者ojp
相关产品推荐
相关产品推荐

