Heim >Backend-Entwicklung >Python-Tutorial >Wie kann man Leerzeichenwerte in Pandas-DataFrames effizient durch NaN ersetzen?
Problem:
Betrachten Sie einen Pandas-Datenrahmen mit Leerzeichenwerten in bestimmten Spalten vorhanden. Das Ziel besteht darin, diese Leerzeichen durch NaN-Werte zu ersetzen.
Hässliche Lösung:
<code class="python">for i in df.columns: df[i][df[i].apply(lambda i: True if re.search('^\s*$', str(i)) else False)]=None</code>
Diese Lösung iteriert durch jede Spalte, generiert eine boolesche Maske mit Regex, und ersetzt Leerraumwerte durch None. Es ist jedoch ineffizient und nicht idiomatisch.
Verbesserte Lösung:
<code class="python">df = pd.DataFrame([ [-0.532681, 'foo', 0], [1.490752, 'bar', 1], [-1.387326, 'foo', 2], [0.814772, 'baz', ' '], [-0.222552, ' ', 4], [-1.176781, 'qux', ' '], ], columns='A B C'.split(), index=pd.date_range('2000-01-01','2000-01-06')) # replaces field that's entirely space (or empty) with NaN print(df.replace(r'^\s*$', np.nan, regex=True))</code>
Diese Lösung nutzt die integrierte Funktion replace() von Pandas, die dies kann kann verwendet werden, um bestimmte Werte basierend auf einem Regex-Muster zu ersetzen. Durch die Verwendung von r'^s*$' gleicht der reguläre Ausdruck jedes Feld ab, das vollständig aus Leerzeichen besteht (oder leer ist), und ersetzt es durch NaN.
Optimierungen:
Das obige ist der detaillierte Inhalt vonWie kann man Leerzeichenwerte in Pandas-DataFrames effizient durch NaN ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!