Поляры Python записывают/читают CSV-обработку разрывов строк (eol)Python

Программы на Python
Anonymous
 Поляры Python записывают/читают CSV-обработку разрывов строк (eol)

Сообщение Anonymous »

Я хочу прочитать данные макета, содержащие символ разрыва строки (eol).
Здесь я использую пакет faker для имитации некоторых данных.
Я инициализирую Polars.DataFrame и записываю его в .csv. Когда я позже попытаюсь прочитать csv
(см. ниже), я получаю ошибку, которая указывает на совпадение между именем столбца и типом d (

Код: Выделить всё

schema_overrides
) и данные не совпадают.
Я думаю, что ошибка связана с разрывом строки/eol в поле строки. Если я закомментирую генерацию поля адреса, все пройдет гладко. А как лучше всего обрабатывать строки с разрывами строк? Я думал, что это нужно перехватить через quote_char (по умолчанию =) и quoting_style в df.write_csv (ссылка)
Ошибка

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=";")
Данные MRE

Код: Выделить всё

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

Вернуться в «Python»