Python Pandas实现按小时统计Niveau字段的最大、最小值
问题排查
你的代码运行不符合预期,是存在4个核心问题:
- 列名拼写错误:CSV文件内的时间列名是
Hour,代码中分组时写的是Heure,无法匹配到目标列 - 统计逻辑错误:你需要的是每小时Niveau的最大值、最小值,现有代码调用
mean()方法计算的是平均值,和需求不符 - 分组粒度错误:CSV中存储的
Hour字段是精确到秒的HH:MM:SS格式,直接分组会按每个独立的分钟/秒值拆分,无法实现按小时聚合的要求 - 列名冗余空格问题:CSV表头的列名前后带有多余空格(比如第一列实际为
Date带尾部空格,第二列为Hour带头部空格),不做处理会导致列名匹配失败
修正后可运行代码
import pandas as pd # 读取CSV文件,指定分号为分隔符,自动跳过分隔符前后的冗余空格,清理列名 df = pd.read_csv('Cmaregraphe.csv', sep=';', skipinitialspace=True) # 将Hour字段转为标准时间格式,提取小时数值作为分组维度 df['统计小时'] = pd.to_datetime(df['Hour']).dt.hour # 按小时分组,聚合计算Niveau字段的最小值、最大值 hourly_result = df.groupby('统计小时')['Niveau'].agg(最小值='min', 最大值='max') print("按小时统计Niveau极值结果:") print(hourly_result) # 如果你需要按「日期+小时」的维度统计(区分不同日期的同一小时),把分组字段改成['Date', '统计小时']即可 # daily_hour_result = df.groupby(['Date', '统计小时'])['Niveau'].agg(最小值='min', 最大值='max')
补充说明
运行后输出的结果中,每一行对应一个0-23点的小时段,最小值列为该小时段内所有Niveau记录的最小值,最大值列为对应小时段的最大值。如果需要导出结果,可以在代码末尾加hourly_result.to_csv('niveau_hourly_stats.csv')直接保存为CSV文件。
内容的提问来源于stack exchange,提问作者Yamoor
相关产品推荐
相关产品推荐

