webentwicklung-frage-antwort-db.com.de

Pandas Ersetze NaN durch eine leere / leere Zeichenkette

Ich habe einen Pandas Dataframe wie unten gezeigt:

    1    2       3
 0  a  NaN    read
 1  b    l  unread
 2  c  NaN    read

Ich möchte die NaN-Werte mit einer leeren Zeichenfolge entfernen, damit es so aussieht:

    1    2       3
 0  a   ""    read
 1  b    l  unread
 2  c   ""    read
156
user1452759
import numpy as np
df1 = df.replace(np.nan, '', regex=True)

Das könnte helfen. Es werden alle NaNs durch eine leere Zeichenfolge ersetzt.

182
nEO

Etwas kürzer ist:

df = df.fillna('')

oder nur

df.fillna('',inplace=True)

Dies füllt nas (z. B. NaNs) mit ''.

Wenn Sie eine einzelne Spalte füllen möchten, können Sie Folgendes verwenden:

df[column1] = df.column1.fillna('')
255
fantabolous

Wenn Sie den Datenrahmen aus einer Datei (z. B. CSV oder Excel) lesen, verwenden Sie Folgendes:

  1. df.read_csv(path , na_filter=False)
  2. df.read_Excel(path , na_filter=False)

Dadurch werden leere Felder automatisch als leere Zeichenfolgen betrachtet ''


Wenn Sie bereits den Datenrahmen haben

  • df = df.replace(np.nan, '', regex=True)
  • df = df.fillna('')
79
Natesh bhat

Verwenden Sie einen Formatierer, wenn Sie ihn nur so formatieren möchten, dass er beim Drucken gut rendert.. Benutze einfach das df.to_string(... formatters zum Definieren der benutzerdefinierten Formatierung von Zeichenfolgen, ohne den DataFrame unnötig zu ändern oder Speicherplatz zu verschwenden:

df = pd.DataFrame({
    'A': ['a', 'b', 'c'],
    'B': [np.nan, 1, np.nan],
    'C': ['read', 'unread', 'read']})
print df.to_string(
    formatters={'B': lambda x: '' if pd.isnull(x) else '{:.0f}'.format(x)})

Bekommen:

   A B       C
0  a      read
1  b 1  unread
2  c      read
3
Steve Schulist

mit keep_default_na=False soll dir helfen:

df = pd.read_csv(filename, keep_default_na=False)
0
Bendy Latortue

Ich habe es mit einer Spalte von String-Werten mit nan versucht.

So entfernen Sie die Nan und füllen die leere Zeichenfolge:

df.columnname.replace(np.nan,'',regex = True)

So entfernen Sie den nan und füllen einige Werte:

df.columnname.replace(np.nan,'value',regex = True)

Ich habe es auch mit df.iloc versucht. aber es braucht den Index der Spalte. Sie müssen also noch einmal in die Tabelle schauen. einfach die obige Methode reduzierte einen Schritt.

0
Vidya Sekar

Versuche dies,

hinzufügen inplace=True

import numpy as np
df.replace(np.NaN, ' ', inplace=True)
0
Vineesh TP

Wenn Sie DataFrame in JSON konvertieren, gibt NaN eine Fehlermeldung aus, sodass die beste Lösung in diesem Fall darin besteht, NaN durch None zu ersetzen.
Hier ist, wie:

df1 = df.where((pd.notnull(df)), None)
0