2016-10-04 4 views
0

これは、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 8 54 12 

そして "coche"という名前の行がすべて必要です。

おかげ

答えて

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] 
0

機能が意図したとおりに動作しなかった「選択」という事実のための私の謝罪。列の残りの部分がコシェ-1、コシェ-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です。

関連する問題