0

Polars中,如何为中的所有列指定一个dtype read_csv

根据docs, to 的dtypes参数read_csv可以采用 形式的映射 (dict){'column_name': dtype}或 dtypes 列表,每列一个。但是,尚不清楚如何指定“我希望所有列都是单个 dtype”。

例如,如果您希望所有列都是 Utf-8 并且您知道总列数,您可以这样做:

pl.read_csv('sample.csv', dtypes=[pl.Utf8]*number_of_columns)

但是,如果您不知道总列数,这将不起作用。在 Pandas 中,您可以执行以下操作:

pd.read_csv('sample.csv', dtype=str)

但这在 Polars 中不起作用。

4

1 回答 1

2

将 csv 中的所有数据读取为任何其他类型,pl.Utf8可能会因大量null值而失败。我们可以使用表达式来声明我们希望如何处理这些空值。

如果您使用 读取 csv infer_schema_length=0,则 polars 不知道架构并将读取所有列,pl.Utf8因为它是所有 polars 类型的超类型。

当我们阅读时,Utf8我们可以使用表达式来转换所有列。

(pl.read_csv("test.csv", infer_schema_length=0)
   .with_columns(pl.all().cast(pl.Int32, strict=False))
于 2022-02-14T07:22:09.730 回答