Mam ramkę danych Pandas, jak pokazano poniżej:
1 2 3
0 a NaN read
1 b l unread
2 c NaN read
Chcę usunąć wartości NaN z pustym ciągiem, aby wyglądał tak:
1 2 3
0 a "" read
1 b l unread
2 c "" read
np.nan
pochodzi? Nie mogę tego użyćimport numpy as np
.pd.np.nan
jeśli nie chceszimport numpy
.pd.DataFrame.from_dict(eval(_string_))
... inplace=True
opcji.Lub tylko
Spowoduje to wypełnienie na (np. NaN)
''
.Jeśli chcesz wypełnić jedną kolumnę, możesz użyć:
Można użyć
df['column1']
zamiastdf.column1
.źródło
df[['column1','column2']] = df[['column1','column2']].fillna('')
Jeśli czytasz ramkę danych z pliku (powiedzmy CSV lub Excel), użyj:
df.read_csv(path , na_filter=False)
df.read_excel(path , na_filter=False)
Spowoduje to automatyczne uznanie pustych pól za puste ciągi
''
Jeśli masz już ramkę danych
df = df.replace(np.nan, '', regex=True)
df = df.fillna('')
źródło
xl.parse('sheet_name', na_filter=False)
Użyj formatyzatora, jeśli chcesz go tylko sformatować, aby dobrze się renderował po wydrukowaniu . Wystarczy użyć,
df.to_string(... formatters
aby zdefiniować niestandardowe formatowanie łańcucha, bez niepotrzebnej modyfikacji DataFrame lub marnowania pamięci:Aby uzyskać:
źródło
print df.fillna('')
sam w sobie (bez robieniadf = df.fillna('')
) nie modyfikuje również oryginału. Czy istnieje szybkość lub inna korzyść z używaniato_string
?df.fillna('')
to prawda!Spróbuj tego,
Dodaj
inplace=True
źródło
używanie
keep_default_na=False
powinno pomóc ci:źródło
Jeśli konwertujesz DataFrame na JSON,
NaN
wyświetli błąd, więc najlepszym rozwiązaniem jest w tym przypadku zastąpienieNaN
goNone
.Oto jak:
źródło
Próbowałem z jedną kolumną wartości ciągów z nan.
Aby usunąć nan i wypełnić pusty ciąg:
df.columnname.replace(np.nan,'',regex = True)
Aby usunąć nan i wypełnić niektóre wartości:
df.columnname.replace(np.nan,'value',regex = True)
Próbowałem też df.iloc. ale potrzebuje indeksu kolumny. więc musisz ponownie zajrzeć do stołu. po prostu powyższa metoda zmniejszyła jeden krok.
źródło