Подтвердить что ты не робот

Получите pandas.read_csv, чтобы читать пустые значения как пустую строку вместо nan

Я использую библиотеку pandas для чтения в некоторых CSV-данных. В моих данных некоторые столбцы содержат строки. Строка "nan" - это возможное значение, равно как и пустая строка. Мне удалось получить pandas для чтения "nan" в виде строки, но я не могу понять, как заставить его не читать пустое значение как 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

Он правильно читает "nan" как строку "nan" , но все же читает пустые ячейки как NaN. Я пробовал передать в str аргумент converters для read_csv (с converters={'One': str})), но он все еще читает пустые ячейки как NaN.

Я понимаю, что могу заполнить значения после чтения с помощью fillna, но не существует способа сказать pandas, что пустую ячейку в конкретном столбце CSV следует читать как пустую строку вместо NaN?

4b9b3361

Ответ 1

Я добавил билет, чтобы добавить здесь какой-то вариант:

https://github.com/pydata/pandas/issues/1450

Тем временем result.fillna('') должен делать то, что вы хотите

EDIT: в версии разработки (окончание 0.8.0), если вы укажете пустой список na_values, пустые строки останутся пустыми в результате

Ответ 2

Я все еще был растерян, прочитав другие ответы и комментарии. Но теперь ответ кажется более простым, поэтому здесь вы идете.

Так как Pandas версия 0.9 (с 2012 года), вы можете прочитать свой csv с пустыми ячейками, интерпретированными как пустые строки, просто установив keep_default_na=False:

pd.read_csv('test.csv', keep_default_na=False)

Эта проблема более четко объясняется в

Это было исправлено 19 августа 2012 года для Pandas версии 0.9 в

Ответ 3

Используйте метод fillna, но используйте его дважды "nan" = "nan", "NaN" = "". Это поддержало бы запятую. Если бы NAN не была там, то столбцы не выстроились бы в линию. Помните: nan не равен NaN.

Ответ 4

У нас в Pandas есть простой аргумент read_csv для этого:

Использование:

df = pd.read_csv('test.csv', na_filter= False)

Документация Pandas четко объясняет, как работает приведенный выше аргумент.

Ссылка на сайт