【问题标题】:Writing Pandas Dataframes as well as numpy arrays to a common Excel File将 Pandas 数据框和 numpy 数组写入一个通用 Excel 文件
【发布时间】:2018-11-20 03:00:25
【问题描述】:

使用 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 数据帧中保存的数据的任何分析结果。

非常感谢您的建议和帮助

托马斯·飞利浦

【问题讨论】:

    标签: python excel pandas numpy xlsxwriter


    【解决方案1】:

    首先,请注意to_excelDataFrame 上的一个方法,因此在np.ndarray 上调用它时失败应该不足为奇。

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

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

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

    【讨论】:

    • 谢谢。你提到这是一种迂回的方式。如果您能指点我,我将不胜感激
    • 如果您能指出正确的方法,我将不胜感激
    • @ThomasPhilips,据我所知,您不能将 NumPy 数组直接导出到 excel 中。我建议你使用这个答案。
    • @ThomasPhilips:我想到的替代方案是将 NumPy 数组直接传递给xlsxwriter,参见。例如xlsxwriter.readthedocs.io/tutorial01.html,而不是通过熊猫。在某些情况下,这可能更可取,因为您避免了对 pandas 及其 API 的依赖,但既然您已经在这里使用了 pandas,那么您当然最好保持简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2015-03-26
    • 2017-09-18
    • 2019-05-10
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多