2016-07-07 11 views
0

Kürzlich muss ich ein Python-Skript schreiben, um herauszufinden, wie oft die bestimmte Zeichenfolge in der Excel-Tabelle auftritt.Wie verwendet man xlwings oder Pandas, um alle Nicht-Null-Zellen zu bekommen?

Ich bemerkte, dass wir *xlwings.Range('A1').table.formula* verwenden können, um diese Aufgabe nur zu erreichen, wenn die Zellen kontinuierlich sind. Wenn die Zellen nicht kontinuierlich sind, wie kann ich das erreichen?

+0

Der Titel und Ihre Frage stimmt nicht überein. Möchten Sie die Nicht-Null-Zellen abrufen oder die Zeiten zählen, in denen sich eine bestimmte Zeichenfolge im Dataframe befindet? – DeepSpace

+0

Möchten Sie es in einer bestimmten Spalte zählen? oder über das gesamte Arbeitsblatt? – OmerBA

+0

@ OmerBA über das gesamte Arbeitsblatt. Danke –

Antwort

1

Es ist ein wenig hacky, aber warum nicht. Übrigens nehme ich an, dass Sie Python 3.x verwenden.

Zuerst erstellen Sie einen neuen booleschen Datenframe, der dem Wert entspricht, nach dem Sie suchen.

import pandas as pd 
import numpy as np 

df = pd.read_excel('path_to_your_excel..') 

b = df.applymap(lambda x: x == 'value_you_want_to_find' if isinstance(x, str) else False) 

und dann einfach alle Vorkommen summieren.

print(np.count_nonzero(b.values)) 
+0

Sie müssen Python 3 nicht wirklich annehmen. Python 2 kann auch '(..)' 'drucken. – DeepSpace

+0

Es ist in Bezug auf die Zeichenfolge überprüfen. in python 2 würde ich isinstance (x, basestring) machen :) – OmerBA

+0

In der Tat, habe ich vermisse das 'if' – DeepSpace

0

Wie in den Kommentaren zu klären, wenn Sie bereits einen Datenrahmen haben, können Sie einfach count (Anmerkung: es muss seine ein besserer Weg, es zu tun): Verwenden Sie

df = pd.DataFrame({'col_a': ['a'], 'col_b': ['ab'], 'col_c': ['c']}) 

string_to_search = '^a$' # should actually be a regex, in this example searching for 'a' 
print(sum(df[col].str.count(string_to_search).sum() for col in df.columns)) 
>> 1 
+0

Danke für Ihre Antwort, @DeepSpace. Es scheint, dass Ihre Code-Dosis nicht funktioniert. Wofür wird die Variable * string_to_search * verwendet? Da kann ich diese Variable in der dritten Zeile nicht finden. –

+0

@YusonKong Ich vermasselt, sorry. Ich habe es repariert. – DeepSpace