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

如何按DatetimeIndex的小时维度对DataFrame分组,得到单计数列结果?

问题根因
  • 执行new_dh.groupby([new_dh.index.hour]).count()时,pandas默认会对DataFrame内的全部列逐列统计非空值数量。由于示例数据里所有列的行值均无空值,每列的统计结果完全一致,最终就会输出多列内容完全重复的结果,无法得到仅含单个计数列的目标输出。
可行实现方案

方案1:优先使用分组size统计(最贴合需求)

size()会直接统计每个分组下的总行数,不受列空值影响,天然输出单值结果,只需要后续调整结构匹配目标格式即可:

# 按DatetimeIndex的小时维度分组,统计每组行数
result = new_dh.groupby(new_dh.index.hour).size().to_frame(name="count")
# 设置索引名称为hour,匹配目标输出格式
result.index.name = "hour"

对示例数据运行后得到的结果值和给定的目标输出完全一致:

count
hour
0           2
1           2
2           2
10          1
23          3

如果需要匹配目标输出里的两位补零小时显示效果(如01、02格式),可以在生成结果后追加一行代码,将索引值格式化为两位字符串:

result.index = result.index.astype(str).str.zfill(2)

方案2:指定单列计数(适配count逻辑的场景)

如果习惯使用count统计逻辑,可以在分组时指定单个无空值的列做计数,避免逐列统计的问题:

# 选取任意无空值的列(示例中s-sitename列无空值)做计数
result = new_dh.groupby(new_dh.index.hour)["s-sitename"].count().to_frame(name="count")
result.index.name = "hour"

注意:如果选取的列存在空值,count逻辑会过滤掉空值所在行的统计,导致计数结果小于实际请求总数,因此优先推荐使用size方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 10:06:03