2017-04-03 6 views
5

Ich möchte überprüfen, ob eine Spalte in einem Datenfeld Zeichenfolgen enthält. Ich hätte gedacht, dass dies nur durch Überprüfung von dtype getan werden könnte, aber das ist nicht der Fall. Eine Pandas Serie, die Strings nur enthält, hat das D-Typ ‚Objekt‘, die auch für andere Datenstrukturen (wie Listen) verwendet wird:Überprüfen, ob eine Datenreihe Zeichenfolgen ist

df = pd.DataFrame({'a': [1,2,3], 'b': ['Hello', '1', '2'], 'c': [[1],[2],[3]]}) 

df = pd.DataFrame({'a': [1,2,3], 'b': ['Hello', '1', '2'], 'c': [[1],[2],[3]]}) 
print(df['a'].dtype) 
print(df['b'].dtype) 
print(df['c'].dtype) 

Produziert:

int64 
object 
object 

Gibt es eine Möglichkeit zu überprüfen, ob ein Spalte enthält nur Zeichenfolgen?

Antwort

7

Sie diese Option, wenn alle Elemente in einer Spalte sehen können Strings sind

df.applymap(type).eq(str).all() 

a False 
b  True 
c False 
dtype: bool 

Um nur zu überprüfen, ob eine Strings sind

df.applymap(type).eq(str).any() 
0

Sie können die Daten mit einer Funktion zuordnen, die alle konvertieren die Elemente auf True oder False, wenn sie gleich str-type sind oder nicht, dann überprüfe einfach, ob die Liste irgendwelche False Elemente enthält

Das folgende Beispiel testet eine Liste enthaltendes Element anders als str. Es wird Ihnen True sagen, ob Daten anderer Art vorhanden ist

test = [1, 2, '3'] 
False in map((lambda x: type(x) == str), test) 

Ausgang: True

Verwandte Themen