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
import numpy as np
df1 = df.replace(np.nan, '', regex=True)
Das könnte helfen. Es werden alle NaNs durch eine leere Zeichenfolge ersetzt.
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('')
df.read_csv(path , na_filter=False)
df.read_Excel(path , na_filter=False)
Dadurch werden leere Felder automatisch als leere Zeichenfolgen betrachtet ''
df = df.replace(np.nan, '', regex=True)
df = df.fillna('')
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
mit keep_default_na=False
soll dir helfen:
df = pd.read_csv(filename, keep_default_na=False)
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.
Versuche dies,
hinzufügen inplace=True
import numpy as np
df.replace(np.NaN, ' ', inplace=True)
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)