2017-05-01 2 views
1

Ich muss ein Python-Skript von Excel aufrufen und ich muss überprüfen, dass die Daten sauber sind.Python - Drucken Fehlermeldung, wenn Zelle leer ist

Ich werde die Datenframes von Excel-Dateien erhalten. Ein inakzeptables Szenario ist ein leerer Wert in einer bestimmten Spalte in der DF.

Ich möchte eine Fehlermeldung ausgeben und das Skript beenden, wenn in dieser Spalte ein Wert leer ist.

Etwas wie:

if df['columnX'] is empty 
    print "error message" 
    sys.exit() 

nicht sicher, was ein effizienter Weg ist damit zu umgehen

Antwort

3

Sie isnull für die Prüfung verwenden können, wenn alle Werte NaN sind - Ausgang ist boolean Maske - True und False Werte .

Dann brauchen all wenn müssen überprüfen, ob alle Werte sind True oder any wenn überprüfen müssen, wenn mindestens ein True ist.

Ausgang ist Skalar True oder False:

if df['columnX'].isnull().all(): 
    print "error message" 
    sys.exit() 

Probe:.

df = pd.DataFrame({'columnX':[np.nan] * 3}) 
print (df) 
    columnX 
0  NaN 
1  NaN 
2  NaN 

print (df['columnX'].isnull()) 
0 True 
1 True 
2 True 
Name: columnX, dtype: bool 

print (df['columnX'].isnull().all()) 
True 

print (df['columnX'].isnull().any()) 
True 

if df['columnX'].isnull().all(): 
    print "error message" 
    sys.exit() 

df = pd.DataFrame({'columnX':[np.nan] * 3 + [5.6]}) 
print (df) 
    columnX 
0  NaN 
1  NaN 
2  NaN 
3  5.6 

print (df['columnX'].isnull()) 
0  True 
1  True 
2  True 
3 False 
Name: columnX, dtype: bool 

print (df['columnX'].isnull().all()) 
False 

print (df['columnX'].isnull().any()) 
True 
+2

Wäre es nicht isnull sein() jede() in diesem Fall? – Vaishali

+1

@ A-Za-z - Danke für den Kommentar, ich addiere zu Lösung Unterschied zwischen 'all' und' any' – jezrael

Verwandte Themen