Код: Выделить всё
ComputeError: Could not parse `22.4` as dtype Int64 at column 59.
The current offset in the file is 433793 bytes.
1. Сначала я читаю файл с параметром чтения, установленным на «infer_schema_length=0» (который считывает данные в строковом формате pl.Utf8). Другой вариант — использовать «ignore_erros = True», но, насколько я понимаю, он преобразует значения ошибок в нули, чего мне часто не нужно.
2. Поскольку я еще не знаю, какой столбец является 59-м, я выполняю цикл for, чтобы выяснить это.
Код: Выделить всё
for i in enumerate(df.columns):
print(i)
Код: Выделить всё
(pl
.read_csv(file="file_name.csv", infer_schema_length=0)
.with_row_count()
.select(
[
pl.col("row_nr"),
pl.col("Error Column Name")
])
.filter(pl.col("Error Column Name") == "22.4")
)
Код: Выделить всё
shape: (1, 2)
┌────────┬───────────────────┐
│ row_nr ┆ Error Column Name │
│ --- ┆ --- │
│ u32 ┆ str │
╞════════╪═══════════════════╡
│ 842 ┆ 22.4 │
└────────┴───────────────────┘
Вопросы:
- Есть ли более простой способ доступа n-й столбец в Polars, чем то, что я делаю на шаге 2?
- Есть ли более оптимальный способ преодолеть значения, вызывающие ошибки?
- Если я читаю файл и столбцы как pl.Utf8 и корректирую значение, вызывающее ошибку, существует ли удобный способ автоматически определять лучшие типы данных для столбцов df после того, как данные были прочитаны, а не вручную просматривать столбец по столбец?
Подробнее здесь: https://stackoverflow.com/questions/751 ... ing-errors