2017-09-11 3 views
0

ich Hunderte von Excel-Dateien und die Suche nach einem String liest dann den Wert neben dieser Zeichenfolge. Das Problem, dem ich gegenüberstehe, ist, dass die Zeichenfolge selten in derselben Zelle ist. Als Beispiel:Python zu extrahieren Excel-Zellen

Blatt 1

 Name    Amount 
     foo    15 
     bar    23 
     bin    10 

Blatt 2

 Name    Amount 
     bin    28 
     foo    10 
     bar    6 

ich die Dateien lesen möchten, und schreiben | foo | # | in einer anderen Excel-Tabelle, wobei jede Instanz eine neue Zeile ist.

ich mit einem Ansatz bin kämpfen zu nehmen.

Wunsch Ausgang

 Name   Amount 
     foo    15 
     foo    10 
+0

Bitte fügen Sie ein Beispiel für die gewünschte Ausgabe finden – bphi

+0

Warum benutzt man Pandas 'DataFrame' nicht, um das finale Excel zu lesen, zu verarbeiten und auszugeben? – FabienP

+0

@FabienP gibt es wahrscheinlich 100 Möglichkeiten, dies zu tun, von denen ich nichts achte. Versuche, alle Optionen zu erkunden und das Beste zu finden. Kann DataFrame einfach und effizient verwendet werden? Ich komme aus einem R-Hintergrund mit grundlegenden Python Verständnis/Fähigkeiten. – ASavage

Antwort

1
from operator import itemgetter 
#use zero based columns 
name_col=0 
value_col=1 
#make a big dict with all the name value pairs ... this might come in handy later 
foo=dict([itemgetter(name_col,val_col)(sheet.get_row_values(i))for i in range(nRows)]).get('foo',None) 

print "FOO:",foo 

so etwas wie, dass ich denke, funktionieren würde ... wenn Sie wirklich kümmern uns um die dict aller Werte nicht könnte man wahrscheinlich genauso wie

etwas tun
def get_foo(sheet,nRows): 
    for i in range(nRows): 
     values = sheet.get_row_values() 
     if 'foo' in values: 
      return values[values.index('foo')+1] 

wo Sie aus der Patsche helfen, wenn Sie Ihren Wert