我正在尝试使用
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)
Polars 没有
converters
参数。所以这是行不通的。
浮点列似乎正在尝试解析为整数。您可以通过在
pl.Float64
中传递列名称来手动将 dtype 设置为 schema_overrides
:
pl.read_csv(..., schema_overrides = {"foo": pl.Float64})
或者您可以增加
infer_schema_length
以便 Polars 自动检测浮点数(前 100 行可能只包含整数)。
默认值为
100
,尝试增加它,直到模式推断正确检测到浮点列。