Панды сохраняют «ноль» и «» при загрузке CSV - PullRequest
1 голос
/ 05 апреля 2019

У меня есть странный CSV, у которого в качестве значения указано "null", а в качестве значения - пустая ячейка.

Итак, моя строка выглядит следующим образом:

null,0,0,0,1,,,,0,0,0,null

Я ничего не делаю, только читаю и переписываю файл:

f = pd.read_csv(input_file,sep=',', quotechar='"', engine='python', converters={i: str for i in range(0, 155)})
f.to_csv(output_file, sep=',', escapechar=' ', quotechar='"', quoting=csv.QUOTE_MINIMAL, index=False)

Технически "переименование" вышефайл, но это для того, чтобы доказать, что я получаю одинаковые значения для всего файла, позже я урежу некоторые столбцы (что я уже сделал, но выяснил, данные неверны).

Итак, как мне сохранить и «ноль», и «», не читая каждую строку / столбец и не создав функцию, которая проверяет каждую ячейку?

Возможно ли это вообще?

Я попробовал na_rep = "null", но затем все '' преобразуются в 'null', или, если я их отбрасываю, я теряю свои значения 'null'.

1 Ответ

2 голосов
/ 05 апреля 2019

Чтобы полностью игнорировать обработку значений NaN, вы можете передать аргумент na_filter=False методу read_csv:

f = (pd.read_csv(input_file,sep=',',
                 quotechar='"',
                 engine='python',
                 converters={i: str for i in range(0, 155)},
                 na_filter=False))

В качестве альтернативы, если вам требуется немного больше контроля над обработкой значений, вы можете исключить значения по умолчанию и передать в свой список na_values.Например:

f = (pd.read_csv(input_file,sep=',',
                 quotechar='"',
                 engine='python',
                 converters={i: str for i in range(0, 155)},
                 na_values=['nan', 'NaN'],
                 keep_default_na=False))

Значения по умолчанию, которые будут автоматически приведены к NaN, равны

default_na_values = ['', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan',
                     '1.#IND', '1.#QNAN', 'N/A', 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...