如何在python中读取xlsx或ods列作为numpy数组

时间:2017-11-25 09:40:23

标签: python arrays numpy xlsx ods

现在我正在使用它,但它似乎非常慢并且还将列打印为列表。此外,我在这里手动添加列到我的列表。是否有更有效的方法使用numpy并将列作为数组读取?

如果不是这样,我正在考虑将其转换为.txt或.csv,因为它们更容易阅读。什么是最有效的选择?

另外,我在.ods和.xlsx中有相同的文件,所以使用其中任何一个都没问题。

import xlrd  
workbook = xlrd.open_workbook("Folds5x2_pp.xlsx","rb")
sheets = workbook.sheet_names()
print sheets
required_data = []
for sheet_name in sheets:
    sh = workbook.sheet_by_name(sheet_name)
    for rownum in range(sh.nrows):
        row_val = sh.row_values(rownum)
        required_data.append((row_val[0], row_val[1]))
print required_data

1 个答案:

答案 0 :(得分:0)

尝试使用openpyxl

>>> from openpyxl import load_workbook
>>> wb = load_workbook('Folds5x2_pp.xlsx', read_only=True)
>>> print wb.sheetnames
['Sheet1', 'Sheet2', 'Sheet3']
>>> ws = wb.get_sheet_by_name('Sheet1')
>>> cols = 0  # column index 
>>> x2 = np.array([r[cols].value for r in ws.iter_rows()])

或者您可以尝试pandas to_records

import pandas as pd; 
df = pd.read_excel('Folds5x2_pp.xlsx'); 
x2 = df.to_records()