Używam biblioteki pand do odczytywania w niektórych danych CSV. W moich danych niektóre kolumny zawierają ciągi. Ciąg "nan"
jest możliwą wartością, podobnie jak pusty ciąg znaków. Udało mi się przekonać pandy, żeby przeczytały "nan" jako ciąg znaków, ale nie wiem, jak to zrobić, żeby nie czytać pustej wartości jako NaN. Oto przykładowe dane i wyjściePobierz pandas.read_csv, aby odczytać puste wartości jako pusty ciąg znaków zamiast nan
One,Two,Three
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven
>>> pandas.read_csv('test.csv', na_values={'One': [], "Three": []})
One Two Three
0 a 1 one
1 b 2 two
2 NaN 3 three
3 d 4 nan
4 e 5 five
5 nan 6 NaN
6 g 7 seven
on prawidłowo czyta „nan” jako ciąg „nan”, ale nadal odczytuje pustych komórek jak Nan. Próbowałem przechodzącą w str
w converters
argument read_csv (z converters={'One': str})
) ale wciąż czyta puste komórki jako NaN:
Zdaję sobie sprawę, że mogę wypełnić wartości po przeczytaniu, z fillna, ale czy naprawdę nie ma sposobu, aby powiedzieć pandom, że pusta komórka w konkretnej kolumnie CSV powinna być odczytana jako pusty ciąg zamiast NaN?
[Dokumentacja dla 'DataFrame.fillna'.] (Http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html) Wypróbuj' result.fillna ('', inplace = True) '. W przeciwnym razie tworzy kopię ramki danych. – osa
Przepraszam, że wskrzesiłem tak starą odpowiedź, ale czy to się kiedykolwiek zdarzyło? O ile mogę powiedzieć od [to GitHub PR] (https: // github.com/pydata/pandas/pull/1522) została zamknięta bez żadnego scalenia i nie widzę żądanego zachowania w pandach wersji 0.14.x – drammock
[Dokumentacja] (http://pandas.pydata.org/pandas- docs/stable/generated/pandas.read_csv.html) dla read_csv oferuje teraz zarówno "na_values" (lista lub dict indeksowane przez kolumny) i 'keep_default_na' (bool). Wartość 'keep_default_na' wskazuje, czy domyślne wartości NA powinny być zastąpione lub dołączone. Kod OP nie działa obecnie tylko dlatego, że brakuje tej flagi. W tym przykładzie możesz użyć 'pandas.read_csv ('test.csv', na_values = ['nan'], keep_default_na = False)'. – delgadom