Я столкнулся с проблемой, я думал, что умные люди в Пандас уже решили, но я не могу найти ничего, так что я здесь.
Проблема, с которой я столкнулся, связана с некоторыми неверными данными, которые, как я ожидал, панды смогут фильтровать при чтении.
Данные выглядят так:
Station;Datum;Zeit;Lufttemperatur;Relative Feuchte;Wettersymbol;Windgeschwindigkeit;Windrichtung
9;12.11.2016;08:04;-1.81;86;;;
9;12.11.2016;08:19;-1.66;85.5;;;
9;²;08:34;-1.71;85.6;;;
9;12.11.2016;08:49;-1.91;87.7;;;
9;12.11.2016;09:04;-1.66;86.6;;;
(используется набор символов ISO-8859-1, в UTF-8 и т. Д. Он выглядит по-другому). Я хочу прочитать второй столбец как даты, поэтому, естественно, я использовал
data = pandas.read_csv(file, sep=";", encoding="ISO-8859-1", parse_dates=["Datum"],
date_parser=lambda x: pandas.to_datetime(x, format="%d.%m.%Y"))
который дал
ValueError: time data '²' does not match format '%d.%m.%Y' (match)
Несмотря на то, что pandas.read_csv имеет входной параметр error_bad_lines , который выглядит так, как будто это поможет мне, похоже, все, что он делает, это отфильтровывает строки, которые не имеют правильного количества столбцов. Теперь я могу отфильтровать эту конкретную строку многими различными способами, и, насколько мне известно, все они требуют сначала загрузить все данные, отфильтровать строки и затем преобразовать столбец в объекты даты и времени, но я бы предпочел сделать это при чтении в файле. Это представляется возможным, поскольку, когда я опускаю date_parser, файл успешно анализируется, а странный символ просто остается как есть (хотя это может вызвать проблемы при выполнении инструкций datetime позже).
Есть ли способ для панд отфильтровывать строки, в которых он не может использовать date_parser при чтении файла вместо во время постобработки?