我想读取包含换行符 (eol) 字符的模型数据。 这里我利用 faker 包来模拟一些数据。
我初始化一个 Polars.DataFrame 并将其写入 .csv。当我稍后尝试读取 csv 时 (见下文),我收到一个错误,这表明列名、数据类型 (
schema_overrides
) 和数据之间的匹配不匹配。
我最好的猜测是,该错误是由于行字段中的换行符/eol 造成的。如果我注释掉地址字段的生成,它就会顺利运行。现在如何最好地处理带有换行符的字符串?我认为这应该通过
quote_char
(默认="
)和quoting_style
中的df.write_csv
(link)来捕获
pydf = PyDataFrame.read_csv( Polars.exceptions.ComputeError:无法将“Date_of_birth”列(列号)处的
解析为 dtype"Edwards, Duncan and Moore"
5)date
文件中的当前偏移量为 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()
将解决该问题
要全面回顾 Python 中的 Polars 包,包括其语法、数据结构和 API,以及与 pandas 进行 Polars 速度比较,请查看此详细指南:
请订阅、点赞并评论视频