Чтение CSV-файлов с помощью Pyarrow

Я пытаюсь прочитать файлы csv, используя библиотеку Python pyarrow, но у меня возникла проблема при чтении файла, потому что для некоторых полей у меня есть значения «\N» (это означает, что это нулевое значение). проблема в том, что я не могу пропустить это значение во время чтения...

вот мой код:

parse_options = csv.ParseOptions(delimiter=chr(1))
read_options = csv.ReadOptions(column_names=columns)
convert_options = csv.ConvertOptions(column_types=schema_table, include_columns=columns, include_missing_columns=True, null_values=True)

with hdfs.open_input_file("path") as f:
    csv_file = csv.read_csv(f, read_options=read_options, parse_options=parse_options, convert_options=convert_options)

Ошибка, которая у меня есть:

ArrowInvalid: In CSV column #59: CSV conversion error to int64: invalid value '\N'

когда я попробовал использовать файл без значения между разделителями, у меня не возникло проблем...

большое спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
121
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

parse_options = csv.ParseOptions(delimiter=chr(1), null_values=['\\N'])
read_options = csv.ReadOptions(column_names=columns)
convert_options = csv.ConvertOptions(column_types=schema_table, 
include_columns=columns, include_missing_columns=True)

with hdfs.open_input_file("path") as f:
    csv_file = csv.read_csv(f, read_options=read_options, 
parse_options=parse_options, convert_options=convert_options)
Ответ принят как подходящий

Все, что вам нужно сделать, это указать «\N», который будет интерпретироваться как ноль, включив его в параметр null_values ​​вашего Convert_options.

convert_options = csv.ConvertOptions(column_types=schema_table, 
                                 include_columns=columns, 
                                 include_missing_columns=True, 
                                 null_values=['\N'])

Надеюсь, поможет.

Другие вопросы по теме