2017-04-23 9 views
0

Ich arbeite mit Daten im .csv-Format und möchte alle leeren Zellen auf den Wert einer leeren Zeichenfolge festlegen.Wie überprüft man, ob eine Variable in Python leer ist

Das Problem, das ich habe, ist mit Blick auf, dass diese Dateien für mehrere Personen in unterschiedlichen Umgebungen manipuliert worden sind, daher gibt es verschiedene Junk-Werte auf diesen Zellen, wie zum Beispiel:

' ' 
'NaN' 
'nan' 
'\n' 
' ' 

Und so weiter.

Ich bin auf der Suche nach einem Standard-Weg, um alle diese Arten von "Junk-Werte" zu identifizieren.

+0

'if yourStringVar.strip():'? – CristiFati

+0

funktioniert es nicht für 'NaN' –

Antwort

2

können Sie die isspace Funktion verwenden, die würden Leerzeichen Werte wie ' ' und '\n' beseitigen würde, aber nicht Werte wie 'NaN' oder 'nan' behandeln. Es ist nicht wirklich ein Standard-Weg, damit umzugehen, so dass zusätzlich zu isspace mit Ich würde auch eine schwarze Liste erstellen, z.B .:

blacklist = ['NaN', 'nan'] # add more as needed

Dann isspace() plus Ihre blacklist verwenden, um unerwünschte Werte herauszufiltern.

0

Sie könnten die CSV in ein Pandas DataFrame lesen und dann DataFrame.fillna() verwenden.

4

Verwenden .strip() Leerzeichen zu entfernen, und dann prüfen, ob der Wert ist eine Sie ignorieren wollen:

if value.strip() in ['', 'NaN', 'nan']: 
    # ignore this value 

Oder machen es Groß- und Kleinschreibung:

if value.strip().lower() in ['', 'nan']: 
    # ignore this value 
0

Ich denke, pandas.replace wäre eine gute Alternative für Ihr Problem.

Im Folgenden sind einige Beispielcodes:

import pandas as pd 
# sample data 
dic = {'a':['NAN', "", "NaN"], 'b':["", "nan", '\n'], 'c':[1,'2','3']} 
df = pd.DataFrame(dic) 

replace_list = ['NaN', '', 'nan', '\n'] 
df_clean = df.replace(replace_list, '') 
df_clean 

Sie CSV-Daten zu Pandas importieren können und das gleiche tun.

Ich hoffe, es hilft.

Verwandte Themen