2017-09-24 1 views
0

Ich importiere ein Dataset mit Pythons Pandas, das leider etwas gereinigt werden muss. Nach dem Import muss ich alle Anführungszeichen und Leerzeichen in zwei Spalten entfernen (alpha2 und alpha3). Diese Zeit ist, wie ich dies tun:Effiziente Datenreinigung beim Importieren von CSV-Dateien mit Pandas

# Add alpha2 country codes to custom dataset to normalize data 
country_codes = pd.read_csv('datasets/country_codes.csv').rename(columns = {'Alpha-2 code':'alpha2', 'Alpha-3 code':'alpha3'}) 
# Remove commas and spaces from dataset 
country_codes['alpha2'] = country_codes['alpha2'].str.replace('"', '') 
country_codes['alpha2'] = country_codes['alpha2'].str.replace(' ', '') 
country_codes['alpha3'] = country_codes['alpha3'].str.replace('"', '') 
country_codes['alpha3'] = country_codes['alpha3'].str.replace(' ', '') 

Meiner Meinung nach ist dies ein bisschen hässlich, da ich brauche 5 Regeln für einige einfache Befehle. Kann dies effizienter/mit weniger Code gemacht werden?

Antwort

1

Sie df.replace mit einem regex verwenden können wie folgt:

country_codes[['alpha2', 'alpha3']].replace(r'"|\s','', 
               regex=True, 
               inplace=True) 

Der vollständige Code wird wie folgt aussehen:

country_codes = pd.read_csv('datasets/country_codes.csv').rename(columns = {'Alpha-2 code': 'alpha2', 'Alpha-3 code':'alpha3'}) 
country_codes[['alpha2', 'alpha3']].replace(r'"|\s','', 
              regex=True, 
              inplace=True) 

jedoch, wie weiter unten in den Kommentaren von @ Jeff refered Es ist besser, nicht inplace=True zu verwenden, sondern stattdessen:

country_codes[['alpha2', 'alpha3']] = country_codes[['alpha2', 'alpha3']].replace(r'"|\s','', 
               regex=True) 

Weitere Informationen finden Sie in der Dokumentation here.

+0

Verwendung von inplace = True auf einem verketteten Ausdruck ist nicht idiomatisch und es funktioniert möglicherweise nur manchmal; Liefern Sie einfach die neuen Werte zurück – Jeff

Verwandte Themen