【问题标题】:How to read a dynamic-sized excel file?如何读取动态大小的 Excel 文件?
【发布时间】:2021-06-02 09:27:55
【问题描述】:

我不知道我是否表达了我的问题,但我会告诉你我想知道的。

我有一个包含多张工作表的 excel 文件。每个工作表具有相同的列数和不同的行数。我想阅读每个 excel 表并将其存储在 3D“项目”中(首先想到的是 MATLAB 单元数组的等效形式)。在我使用这个单元格数组之后,我希望能够动态地遍历它。 现在我已经编写了以下代码,其中我读取了 3D 数组中的表格(因此 excel 表格需要具有相同的尺寸):

excelF = pd.ExcelFile (fileName)
sheetsno = len(excelF.sheet_names)
dim = excelF.parse()
array = np.zeros((sheetsno,dim.shape[0],dim.shape[1]))
for i in range(0,sheetsno):
    df = pd.read_excel (fileName,sheet_name = i)
    array[i,:,:] = df.to_numpy()

【问题讨论】:

  • 你的代码不是已经实现了吗?如果您在工作表 1 中有一个 3x2 数组,在工作表 2 中有一个 3x3,在工作表 3 中有一个 3x4,您是否想要一个包含多个 2D 数组的一维数组,每个数组都有自己的大小(例如:[array(3x2), array(3x3) , array(3x4) ],还是你想要一个 3x4 的 3d 数组?
  • 我想要一个保存数组的一维数组(例如 [数组(3x2),数组(3x3),数组(3x4)])。我尝试了不同大小的代码,但它不起作用。
  • 文件是“动态大小”是什么意思?还有什么是动态迭代”?
  • 我发布的答案是你想要的吗?还是我应该编辑一些东西?
  • 感谢您的帮助@Zingerella

标签: python excel pandas dataframe numpy


【解决方案1】:

我已经测试了这段代码,它适用于多维的多张工作表。我使用一个 python 列表并将一个 np 数组附加到每个工作表上的该列表。我不认为下一步是必要的(除非您想专门使用 numpy),但随后我将列表转换为 np.array

import pandas as pd
import numpy as np
excelF = pd.ExcelFile ('test.xlsx')
array = []
for i in range(0,len(excelF.sheet_names)):
    df = excelF.parse(i) # use excelF.parse(i,header=None) to include first row    
    array.append(df.to_numpy())
array = np.array(array)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2022-01-14
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    相关资源
    最近更新 更多