Здесь я использую пакет faker для имитации некоторых данных.
Я инициализирую Polars.DataFrame и записываю его в .csv. Когда я позже попытаюсь прочитать csv
(см. ниже), я получаю ошибку, которая указывает на совпадение между именем столбца и типом d (
Код: Выделить всё
schema_overridesЯ думаю, что ошибка связана с разрывом строки/eol в поле строки. Если я закомментирую генерацию поля адреса, все пройдет гладко. А как лучше всего обрабатывать строки с разрывами строк? Я думал, что это нужно перехватить через quote_char (по умолчанию =
Код: Выделить всё
"Ошибка
pydf = PyDataFrame.read_csv(
polars.Exceptions.ComputeError: не удалось проанализировать «Эдвардс, Дункан и Мура» как дату dtype в столбце «Date_of_birth» (номер столбца
5)
Текущее смещение в файле составляет 309563 байта.
Код, вызывающий ошибку
Код: Выделить всё
# Reading in throws an error
df_throws = pl.read_csv("mockme_up.csv", schema_overrides=dtypes, separator=";")
Код: Выделить всё
import polars as pl
from faker import Faker
fake = Faker()
# Erstellung der Mockup-Daten unter Verwendung von Faker
N = int(1e4)
data = {
"Name": [fake.name() for _ in range(N)],
"Address": [fake.address() for _ in range(N)],
"Email": [fake.email() for _ in range(N)],
"Phonenumber": [fake.phone_number() for _ in range(N)],
"Date_of_birth": [
fake.date_of_birth(minimum_age=18, maximum_age=90) for _ in range(N)
],
"Company": [fake.company() for _ in range(N)],
"Job": [fake.job() for _ in range(N)],
"IBAN": [fake.iban() for _ in range(N)],
"Creditcard": [fake.credit_card_number() for _ in range(N)],
"Creation_date": [fake.date() for _ in range(N)],
}
dtypes = {
"Name": pl.Utf8,
"Address": pl.Utf8,
"Email": pl.Utf8,
"Phonenumber": pl.Utf8,
"Date_of_birth": pl.Date,
"Company": pl.Utf8,
"Job": pl.Utf8,
"IBAN": pl.Utf8,
"Creditcard": pl.Int64,
"Creation_date": pl.Date,
}
df = pl.DataFrame(data)
df.write_csv("mockme_up.csv", separator=";", quote_style="non_numeric")
print("=" * 50)
print(f"Succeful created mockup data of shape {df.shape=}")
print("=" * 50)
Теперь это отслеживается как проблема GitHub: https://github.com/pola-rs/polars/issues/19078
В качестве обходного пути передача n_threads=1 в read_csv() устранит проблему.
Подробнее здесь: https://stackoverflow.com/questions/790 ... breaks-eol