Polars:在 read_csv 中一次指定所有列的数据类型

dav*_*les 11 python python-polars

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

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

例如,如果您希望所有列均为 Utf-8 并且您知道列总数,则可以执行以下操作:

pl.read_csv('sample.csv', dtypes=[pl.Utf8]*number_of_columns)
Run Code Online (Sandbox Code Playgroud)

但是,如果您不知道总列数,则此方法不起作用。在 Pandas 中,你可以这样做:

pd.read_csv('sample.csv', dtype=str)
Run Code Online (Sandbox Code Playgroud)

但这在Polars中不起作用。

rit*_*e46 15

将 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))
Run Code Online (Sandbox Code Playgroud)