将Pandas Dataframes和numpy数组编写到一个通用的Excel文件中

时间:2018-06-10 20:49:38

标签: python excel pandas numpy xlsxwriter

使用Python 3.6和Pandas 0.22我创建了一个pandas数据帧IRdaily,其中包含各种利率的每日变化的时间序列。我可以使用以下命令轻松地将Pandas数据帧写入Excel:

writer = pd.ExcelWriter(outFileName)
IRdaily.to_excel(writer, 'Daily Changes')

但如果我现在计算特征值分解(特征值向量和特征向量矩阵都是numpy ndarrays)并尝试将它们写入同一工作表我会得到一个错误:

covD  = deltaIRdaily.cov()
eigValD, eigVecD = np.linalg.eigh(covD)
eigValD.to_excel(writer, 'Daily Changes', startcol = 15) 
eigVecD.to_excel(writer, 'Daily Changes', startrow = 15, startcol = 15) 


Traceback (most recent call last):
  File "c:\Documents\Python\FedInterestRateDataExtract.py", line 58, in <module>
    eigValD.to_excel(writer, 'Daily Changes', startcol = 15)
AttributeError: 'numpy.ndarray' object has no attribute 'to_excel'

如何将ndarrays写入打开的工作簿中现有工作表中的指定行和列?它正在使用Pandas数据帧正确完成,因此我猜测必须有一种简单的方法来编写Pandas数据帧中保存的数据的任何分析结果。

非常感谢您的建议和帮助

Thomas Philips

1 个答案:

答案 0 :(得分:3)

首先,请注意to_excelDataFrame上的一种方法,因此在np.ndarray上调用时失败并不会太令人惊讶。

关于实际问题,这是一种相当迂回的方式,但由于你已经设置了pd.ExcelWriter,我建议只需将两个数组转换为DataFrame s,而是做一些事情。相当于

pd.DataFrame(eigValD).to_excel(writer, 'Daily Changes', startcol=15, header=False, index=False)

更直接的方法是直接使用xlsxwriter