如何将含datetime的DataFrame转为日期为行、小时为列并填充Demand值
解决方案
你可以通过日期透视的方式把现有数据转换成365行(天)×24列(小时)的结构,具体步骤如下:
- 确保
date列是datetime类型(如果还没转换的话) - 从datetime字段中提取日期(年月日)和小时作为新列
- 使用
pivot方法重构数据结构,按需转为numpy数组
完整代码示例
import pandas as pd # 确保date列为datetime类型(原数据未转换时执行) df2['date'] = pd.to_datetime(df2['date']) # 提取日期(仅年月日)和小时 df2['day'] = df2['date'].dt.date df2['hour'] = df2['date'].dt.hour # 透视:日期为行,小时为列,Demand值填充 df_daily_hourly = df2.pivot(index='day', columns='hour', values='Demand') # 转为365×24的numpy数组(按需执行) demand_array = df_daily_hourly.values
补充说明
- 2021是平年,透视后的
df_daily_hourly刚好是365行×24列的DataFrame - 如果存在缺失的小时记录,可通过
df_daily_hourly.fillna(0, inplace=True)填充默认值 - 最终的
demand_array即为你需要的365×24数值数组
内容的提问来源于stack exchange,提问作者Learning Python
相关产品推荐
相关产品推荐

