如何对pandas DataFrame按小时重采样计算AC_POWER均值并解决输出异常
问题原因
从你给出的运行结果可以看出resample操作未完成小时级聚合,核心问题如下:
- 调用
mean()时未指定仅计算数值列,当前数据集存在SOURCE_KEY等字符串类型列,无法参与均值计算,导致聚合失效,保留了原始行记录 - 日期时间转换未指定格式,你数据集的时间格式为
日-月-年 时:分,属于pandas非默认识别格式,容易出现识别误差
你更换其他数据集可以正常运行,大概率是因为其他数据集没有非数值类型列,mean()可以正常执行全表聚合。
修正后代码
import pandas as pd df = pd.read_csv('dataset.csv') # 转换时间时指定格式,避免识别错误 df['DATE_TIME'] = pd.to_datetime(df['DATE_TIME'], format='%d-%m-%Y %H:%M') # 仅对AC_POWER字段做小时级均值聚合,再重置索引调整列名 result = df.resample('H', on='DATE_TIME')['AC_POWER'].mean().reset_index() result.columns = ['DATE', 'AC_POWER'] # 若需要DATE列输出为带单引号的字符串格式,可添加下方代码 result['DATE'] = result['DATE'].dt.strftime("'%d-%m-%Y %H:%M'")
运行后输出的result即可匹配你期望的格式。
内容的提问来源于stack exchange,提问作者blkjim99
相关产品推荐
相关产品推荐

