2016-09-27 5 views
1

Können Sie mir bitte wissen, wie Zeilen mit Pandas Basis auf Zeichenbereich wie [0-9] oder [A-Z] zu filtern.Pandas - wie Zeilen basierend auf regulären Ausdruck gefiltert werden

Fall wie diesem, wo die alle Spaltentypen sind Objekte

A   B 
2.3  234 
4.5  4b6 
7b  275 

Ich mag wäre zu prüfen, ob alle Werte in der Spalte A sind Schwimmer Bedeutung enthält [0-9] und ‚‘ ? Ich kenne pd.to_numeric, applymap, isreal, isdigit usw., aber das ist Objektspalte, bevor ich es in einen beliebigen numerischen Wert umwandle. Ich möchte den Maßstab des Problems für nicht float Werte kennen.

und die Zeilen in Datensatz enthält Zeichen andere als [0-9]

Antwort

1

try this:

In [8]: df 
Out[8]: 
    A B 
0 2.3 234 
1 4.5 4b6 
2 7b 275 
3 11 11 

In [9]: df.A.str.match(r'^\d*\.*\d*$') 
Out[9]: 
0  True 
1  True 
2 False 
3  True 
Name: A, dtype: bool 

In [10]: df.loc[df.A.str.match(r'^\d*\.*\d*$')] 
Out[10]: 
    A B 
0 2.3 234 
1 4.5 4b6 
3 11 11 

UPDATE:

ab Pandas 0.20.1 the .ix indexer is deprecated, in favor of the more strict .iloc and .loc indexers .

+0

Danke Mann - das funktioniert, wie ich wollte –

+0

@ErrorReplicator, Sie sind willkommen. :) Bitte beachten Sie [akzeptieren] (http://meta.stackexchange.com/a/5235) eine Antwort, wenn Sie denken, dass es Ihre Frage beantwortet hat – MaxU

Verwandte Themen