如何在Excel或Python中按时间列条件对指定数值列进行分组求和
Excel实现方案
- 先提取时间列的小时值:假设
time列为A列,number列为B列,在空白列C2单元格输入公式=HOUR(A2),下拉填充所有行,即可得到每行记录对应的小时数值(0点返回0,2点返回2)。 - 按小时分组求和有两种常用方式:
- SUMIF函数法:在D列列出需要统计的小时对应区间文本(如
00:00 am - 00:59 am),E2单元格输入公式=SUMIF(C:C,LEFT(D2,2)*1,B:B),下拉后即可得到所有区间的求和结果。 - 数据透视表法:选中全量数据,点击「插入」-「数据透视表」,将
time字段拖入行区域,number字段拖入值区域,值汇总方式选择「求和」,右键行区域的任意时间项选择「组合」,步长勾选「小时」,即可直接生成按小时区间分组的求和结果。
- SUMIF函数法:在D列列出需要统计的小时对应区间文本(如
Python实现方案
依赖pandas库操作,代码示例如下:
import pandas as pd # 读取数据,自动转换time列为时间格式 df = pd.read_excel("你的文件路径.xlsx", parse_dates=["time"]) # 按小时分组对number求和 sum_result = df.groupby(df["time"].dt.hour)["number"].sum().reset_index() # 生成指定格式的时间区间列 sum_result["时间区间"] = sum_result["time"].apply(lambda x: f"{x:02d}:00 am - {x:02d}:59 am") # 输出需要的列顺序 sum_result = sum_result[["时间区间", "number"]] print(sum_result)
运行后输出的sum_result即为按指定区间分组求和的结果。
内容的提问来源于stack exchange,提问作者field
相关产品推荐
相关产品推荐

