有效地(性能和内存)提取工作表名称和给定工作表的Python3选项,以及从非常大的.xlsx文件中提取列的名称是什么?
我尝试使用熊猫:
对于使用pd.ExcelFile
的工作表名称:
xl = pd.ExcelFile(filename)
return xl.sheet_names
对于使用pd.ExcelFile
的列名:
xl = pd.ExcelFile(filename)
df = xl.parse(sheetname, nrows=2, **kwargs)
df.columns
对于使用pd.read_excel
和不使用nrows
(> v23)的列名称:
df = pd.read_excel(io=filename, sheet_name=sheetname, nrows=2)
df.columns
但是,pd.ExcelFile
和pd.read_excel
似乎都在读取内存中的整个.xlsx,因此速度很慢。
非常感谢!
答案 0 :(得分:1)
这是我与您分享的最简单方法:
# read the sheet file
import pandas as pd
my_sheets = pd.ExcelFile('sheet_filename.xlsx')
my_sheets.sheet_names
答案 1 :(得分:0)
根据this SO question,不支持分块读取excel文件(see this issue on github),使用nrows
将始终首先将所有文件读取到内存中。
可能的解决方案:
答案 2 :(得分:0)
此程序列出了excel中的所有工作表。 在这里使用熊猫。
import pandas as pd
with pd.ExcelFile('yourfile.xlsx') as xlsx :
sh=xlsx.sheet_names
print("This workbook has the following sheets : ",sh)
答案 3 :(得分:0)
我认为这会帮助满足需求
from openpyxl import load_workbook
workbook = load_workbook(filename, read_only=True)
data = {} #for storing the value of sheet with their respective columns
for sheet in worksheets:
for value in sheet.iter_rows(min_row=1, max_row=1, values_only=True):
data[sheet.title] = value #value would be a tuple with headings of each column