如何用Pandas创建日期索引DataFrame并填入Numpy数组数据
问题原因说明
你最初的创建方式得不到预期结果的核心原因是维度不匹配:你传入的[qq, hh]是2行×24列的二维结构,而你需要的是24行×2列的数据源,同时你指定的24行时间索引和2行的数据源长度无法对应,因此无法生成符合要求的DataFrame。
现有方案合理性
你目前使用的「先创建带时间索引的DataFrame,再逐列赋值」的方案是完全合理的,逻辑清晰易懂,对于常规规模的数据集,性能完全可以满足需求。
更简洁的实现方式
推荐优先使用字典传入列数据的写法,一步完成创建,不需要拆分步骤,也不容易出现列顺序匹配错误的问题:
import pandas as pd import numpy as np # 你的原始数组 qq = np.zeros(24) hh = np.zeros(24) start = '2018-01-01 00:00:00' start_date = pd.to_datetime(start, format='%Y-%m-%d %H:%M:%S') # 一步生成目标DataFrame df = pd.DataFrame( {'Qout': qq, 'h': hh}, index=pd.date_range(start_date, periods=24, freq='H') )
如果你偏好传入数组+指定列名的写法,可以用np.column_stack将两个一维数组按列拼接为二维数组后传入,效果一致:
df = pd.DataFrame( np.column_stack([qq, hh]), columns=['Qout', 'h'], index=pd.date_range(start_date, periods=24, freq='H') )
内容的提问来源于stack exchange,提问作者diedro
相关产品推荐
相关产品推荐

