首页 > 解决方案 > 将 3D 数组导出到 Excel 工作簿

问题描述

我有一个形状为 (t,l,b)=(122,40,30) 的 3D 数组 (TAU),我想将它作为 2D 导出到 Excel 工作簿,第三维是张数。所以基本上结果是 30 张,每张都有 122 行和 40 列的表格。形成这个数组需要三个for循环(t、l 和 b),最后我获取最终结果并尝试将其导出到 Excel 工作簿中。
我是 Python 新手,我的语法似乎有问题。我正在使用熊猫。这是似乎导致错误的代码部分。请注意,TAU 创建为

TAU=np.zeros(len(t),40,30)

writer = pd.ExcelWriter((stn + '_AOD.xlsx'), engine='xlsxwriter')
Time = pd.DataFrame(t)

for i in range(0, 40):
    TAU = pd.DataFrame(nc.variables['TAU'][:,i,:])
    Time.to_excel(writer, index=False, header=['DateTime'], sheet_name='bin%d' % i)
    TAU.to_excel(writer, index=False,header=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], sheet_name='bin%d' % i, startcol=1)

 writer.save()

 np.close()

错误:TAU = pd.DataFrame(nc.variables['TAU'][:,i,:])

键错误:'TAU'

Exception ignored in: <bound method Workbook.__del__ of
<xlsxwriter.workbook.Workbook object at 0x0000000007D3EFD0>> Traceback
(most recent call last):   File
"C:\ProgramData\Anaconda3\lib\site-packages\xlsxwriter\workbook.py",
line 149, in __del__ Exception: Exception caught in workbook
destructor. Explicit close() may be required for workbook.

标签: pythonexcelpython-3.xpandasmultidimensional-array

解决方案


下面的代码会产生我认为您正在寻找的输出。

data = np.zeros((122, 40, 30))

writer = pd.ExcelWriter('file.xlsx', engine='xlsxwriter')

for i in range(0, 30):
    df = pd.DataFrame(data[:,:,i])
    df.to_excel(writer, sheet_name='bin%d' % i)

writer.save()

推荐阅读