迭代器迭代Excel文件

时间:2015-09-11 12:02:44

标签: python excel list pandas iterator

我有一些数据存储在Excel表格(.xlsx)中,我当前的Python脚本会将它们读入内存并将其用于计算。我将通过一个例子来解释我的剧本。

假设我的Excel文件在特定列下包含此数据:a = [1,2,3,4,5]

我正在使用pandas(pd.read_excel())将这整件事读入内存并运行我自己的迭代器函数来获取:

a0 = [1,2,3,4,5]
a1 = [5,1,2,3,4]
a2 = [4,5,1,2,3]

等等。基本上我将每个元素移动一些整数。 a0, a1a2在这里显示为列表,但它们是迭代器对象,我不存储它们。

正如您在此注意到的那样,a0始终与a相同,我并不需要将a存储在内存中,因为我只需要它一次,这就是a0。所以我要做的是让某种迭代器对象直接迭代excel文件以捕获a0, a1a2,就好像我先导入a然后迭代{ {1}}超过a0, a1, a2

我尝试做这样的事情的原因是因为我的脚本用于计算的时间比从Excel导入数据所花费的时间短。因此,为了提高我的脚本性能,我需要找到一种迭代Excel而不是将数据保存到内存中的方法。我很感激任何帮助。

另外,我的评论:如果a或其他一些库具有pandas类功能,那么我可以轻松制作自己的excel迭代器。但我不知道我对熊猫或其他图书馆的选择是什么。

1 个答案:

答案 0 :(得分:1)

我没有使用pandas read_excel功能的经验,但我们在openpyxl取得了很好的成功。该库允许您定义指向特定工作表的变量,然后迭代该变量,如下所示(直接从their tutorial拉出):

from openpyxl import load_workbook
wb = load_workbook(filename='large_file.xlsx', read_only=True)
ws = wb['big_data'] # ws is now an IterableWorksheet

for row in ws.rows:
    for cell in row:
        print(cell.value)