如何选择具有相同名称的所有行而不仅仅是第一行?

时间:2016-10-04 08:37:17

标签: python python-2.7 pyexcel

这是xls文件:

moto    5   2   45
moto    2   4   43
coche   8   54  12
coche   43  21  6
coche   22  14  18

这是使用pyexcel库的代码:

import pyexcel as pe
data = pe.get_sheet(file_name="vehiculo.xls")
sheet = pe.Sheet(data, name_rows_by_column=0)
sheet.row.select(['coche'])
sheet.save_as("output.xls")

它只返回名为' coche':

的fisrt行
coche   8   54  12

我希望所有的行都带有名称" coche"。

有什么想法吗? 感谢

2 个答案:

答案 0 :(得分:0)

只是迭代数据:

import pyexcel
from collections import defaultdict

results = defaultdict(list)
data = pe.get_sheet(file_name="vehiculo.xls")
for row in data.rows():
   results[row[0]] += row[1:]

您将获得以下内容:

>>> results['moto']
[5L, 2L, 45L, 2L, 4L, 43L]

答案 1 :(得分:0)

我为“功能”选择'这一事实道歉。没有按预期工作。它没有用,因为行的其余部分变成了coche-1,coche-2(你可以通过print(s)查看)。这是具有相同名称的行名称的默认行为。将来会改变。

目前,为了让您的用例有效,您可以在此语句中使用pyexcel == 0.3.0 +:

...
>>> sheet = pe.Sheet(data) # , name_rows_by_column=0)
>>> del sheet.row[lambda row_inde,row: row[0] != 'coche']
...

此功能的the documentation