Ich habe einen Pandas-Datenrahmen 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
np.nan
das? Ich kann es nicht benutzenimport numpy as np
.pd.np.nan
wenn Sie es nicht wollenimport numpy
.pd.DataFrame.from_dict(eval(_string_))
... inplace=True
Option zu erwähnen .oder nur
Dies wird Na's (zB NaN's) mit füllen
''
.Wenn Sie eine einzelne Spalte füllen möchten, können Sie Folgendes verwenden:
Man kann
df['column1']
statt verwendendf.column1
.quelle
df[['column1','column2']] = df[['column1','column2']].fillna('')
Wenn Sie den Datenrahmen aus einer Datei (z. B. CSV oder Excel) lesen, verwenden Sie:
df.read_csv(path , na_filter=False)
df.read_excel(path , na_filter=False)
Dadurch werden die leeren Felder automatisch als leere Zeichenfolgen betrachtet
''
Wenn Sie den Datenrahmen bereits haben
df = df.replace(np.nan, '', regex=True)
df = df.fillna('')
quelle
xl.parse('sheet_name', na_filter=False)
Verwenden Sie einen Formatierer, wenn Sie ihn nur so formatieren möchten, dass er beim Drucken gut wiedergegeben wird . Verwenden Sie einfach die
df.to_string(... formatters
, um die benutzerdefinierte Zeichenfolgenformatierung zu definieren, ohne Ihren DataFrame unnötig zu ändern oder Speicherplatz zu verschwenden:Bekommen:
quelle
print df.fillna('')
an sich (ohne es zu tundf = df.fillna('')
) ändert auch nicht das Original. Gibt es eine Geschwindigkeit oder einen anderen Vorteil bei der Verwendungto_string
?df.fillna('')
es!Versuche dies,
hinzufügen
inplace=True
quelle
Verwenden
keep_default_na=False
sollte Ihnen helfen:quelle
Wenn Sie Datenrahmen zu JSON konvertieren,
NaN
wird Fehler geben , so beste Lösung in diesem Anwendungsfall ist zu ersetzenNaN
mitNone
.Hier ist, wie:
quelle
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 die 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 erneut in die Tabelle schauen. einfach die obige Methode um einen Schritt reduziert.
quelle