Я с указанием dtypes при чтении огромного CSV в pandas
:пренебрегая строки с DTYPE в удалении информации панд
pd.read_csv('29_2016/data.csv',
error_bad_lines=False,
encoding='utf-8',
dtype={'a': str, 'b': np.float64, 'c':np.float64},
na_values=['na'], quotechar='"')
но есть некоторые «плохая» строка в моих данных, и они не соответствуют DTYPE из-за к некоторым проблемам подготовки данных. Например, у меня могут быть строки в столбце b или столбце c.
Есть ли способ игнорировать эти плохие строки при чтении CSV, используя pandas
read_csv
?
Ошибка:
pandas/parser.pyx in pandas.parser.TextReader.read (pandas/parser.c:7988)()
pandas/parser.pyx in pandas.parser.TextReader._read_low_memory (pandas/parser.c:8244)()
pandas/parser.pyx in pandas.parser.TextReader._read_rows (pandas/parser.c:9261)()
pandas/parser.pyx in pandas.parser.TextReader._convert_column_data (pandas/parser.c:10654)()
pandas/parser.pyx in pandas.parser.TextReader._convert_tokens (pandas/parser.c:11891)()
ValueError: could not convert string to float: some string "\
насчет чтения всего файла и выбрать нужные строки, используя подход, как это (должно быть принято для строк вместо столбцов): http://stackoverflow.com/questions/21271581/selecting-pandas-columns-by-dtype – albert
Что происходит, учитывая предоставленный код, в котором вы определяете типы данных, когда pandas встречает * плохую строку * (которую он не может отнести к указанному dtype)? –
Я думаю, что вы можете использовать аргумент «преобразователи», как в этом [ответе] (http://stackoverflow.com/a/38378291/5717589) (с помощью try-except), затем при необходимости удалите nan. – ptrj