2014-12-02 116 views
1

我正尝试使用xlrd从XML文件创建数据矩阵。下面是XML数据和我的尝试:通过从Excel中读取数据创建矩阵

enter image description here

import xlrd 
file_loc="C:\\Users\\xxxx\\Documents\\test1.xlsx" 
wkb=xlrd.open_workbook(file_loc) 
sheet=wkb.sheet_by_index(0) 

_maxtrix=[] 
for col in range (sheet.ncols): 
    for row in range (sheet.nrows): 
     _matrix.append(sheet.cell_value(row,col)) 
print _matrix 

我的输出:

[1.0, 2.0, 3.0, 4.0, 2.0, 3.0, 4.0, 5.0, 3.0, 4.0, 5.0, 6.0, 4.0, 5.0, 6.0, 7.0] 

所需的输出:

[[1,2,3,4], 
[2,3,4,5], 
[3,4,5,6], 
[4,5,6,7]] 

如何获得所需的输出任何想法?

回答

1

您正在追加到一个列表,因此您获得1个列表。

您必须将列表添加到_matrix。类似的东西应该做的伎俩:

_matrix=[] 
for row in range (sheet.nrows): 
    _row = [] 
    for col in range (sheet.ncols): 
     _row.append(sheet.cell_value(row,col)) 
    _matrix.append(_row) 

如果你想int,而不是float,与

 _col.append(int(sheet.cell_value(row,col))) 
+0

谢谢你这么多的快速解决方案转换值。它运作良好。 – user2274879 2014-12-02 11:12:14

+0

如何阅读特定列?例如'列c'来获取列表; '[3,4,5,6]' – user2274879 2014-12-02 12:11:58

+0

我刚发现你的解决方案不能按预期工作,因为矩阵必须转置。 – user2274879 2014-12-02 13:38:50