从Excel读取3k图纸并将其上传到Pandas Dataframe中的最佳/最快方法

时间:2019-05-09 20:14:43

标签: python excel pandas

我有一个包含3k图纸的Excel文件。我目前正在一页一页地阅读工作表,转换为数据框,追加到列表中并重复。 for循环中的迭代持续大约90秒,这是大量的时间。每张纸有大约35行数据和5列。

有人可以建议一种更好的方法来解决这个问题吗?

这是我的代码:

import pandas as pd
import time

nr_pages_workbook = list(range(1,3839))
nr_pages_workbook = ['Page '+str(x) for x in nr_pages_workbook]
list_df = []

start = time.time()
for number in nr_pages_workbook:

    data = pd.read_excel('D:\\DEV\\Stage\\Project\\Extras.xlsx',sheet_name=number)
    list_df.append(data)
    break

stop = time.time() - start

Df_Date_Raw = pd.concat(list_df)

2 个答案:

答案 0 :(得分:2)

您可以尝试将nr_pages_workbook直接传递给sheet_name中的read_excel参数,根据docs可以是一个列表,返回值将是数据框。这样,您可以避免在每个周期中打开和读取文件的开销。

或者只是简单地省略该参数,然后将所有工作表读入dict,然后从dict进行连接:

data = pd.read_excel('D:\\DEV\\Stage\\Project\\Extras.xlsx')
df = pd.concat([v for k,v in data.items()])

答案 1 :(得分:2)

每当遍历循环时,您将再次读取整个文件。我建议使用ExcelFile读取一次,然后在循环中访问特定的工作表。试试:

import pandas as pd
xl = pd.ExcelFile('foo.xls')
sheet_list = xl.sheet_names
for i in sheet_list:
    if i ==0:
        df = xl.parse(i)
    else:
        df = df.append(xl.parse(i), ignore_index=True)
相关问题