使用 Polars 读取 CSV 文件时解析错误

问题描述 投票:0回答:1

我正在尝试使用

read_csv
命令将数据加载到极坐标 DataFrame 中,但我不断收到此错误

RuntimeError: Any(ComputeError("Could not parse 0.5 as dtype Int64 at column 13.\n                                            The total offset in the file is 11684833 bytes.\n\n                                            Consider running the parser `with_ignore_parser_errors=true`\n                                            or consider adding 0.5 to the `null_values` list."))

当我使用转换器参数时,如下所示:

converters = {
    'Date': lambda x: datetime.strptime(x, "%b %d, %Y"),
    'Number': lambda x: float(x)
}

错误仍然存在。 我还尝试使用错误中显示的参数:

ignore_errors=True

错误仍然存在。我能做些什么? 我的问题不是解析日期,而是解析数字。 这就是我现在所拥有的:

converters = {
   'Date': lambda x: datetime.strptime(x, "%b %d, %Y"),
   'Number': lambda x: float(x)
}

df_file = pl.read_csv(file_to_read, has_headers=True, converters=converters, ignore_errors=True)
python parsing numbers python-polars
1个回答
5
投票

Polars 没有

converters
参数。所以这是行不通的。

浮点列似乎正在尝试解析为整数。您可以通过在

pl.Float64
中传递列名称来手动将 dtype 设置为
schema_overrides
:

pl.read_csv(..., schema_overrides = {"foo": pl.Float64})

或者您可以增加

infer_schema_length
以便 Polars 自动检测浮点数(前 100 行可能只包含整数)。

默认值为

100
,尝试增加它,直到模式推断正确检测到浮点列。

© www.soinside.com 2019 - 2024. All rights reserved.