在Polars中,如何为read_csv
中的所有列指定一个dtype?
根据文档,dtypes
到read_csv
的参数可以采用{'column_name': dtype}
形式的Map(dict),也可以采用一个dtypes列表,每列一个。但是,不清楚如何指定“我希望所有列都是单个dtype”。
例如,如果你希望所有列都是UTF-8,并且你知道列的总数,你可以这样做:
pl.read_csv('sample.csv', dtypes=[pl.Utf8]*number_of_columns)
但是,如果您不知道列的总数,则这将不起作用。在Pandas中,您可以执行以下操作:
pd.read_csv('sample.csv', dtype=str)
但这在北极星上行不通。
2条答案
按热度按时间v8wbuo2f1#
将csv中的所有数据读取为除
pl.Utf8
之外的任何其他类型可能会失败,因为有很多null
值。我们可以使用表达式来声明如何处理这些空值。如果你读取一个带有
infer_schema_length=0
的csv,polars不知道这个模式,并且会将所有列读取为pl.Utf8
,因为它是所有polars类型的超类型。当读取为
Utf8
时,我们可以使用表达式来转换所有列。t8e9dugd2#
如果你想把所有的列都读成
str
(在polars中是pl.Utf8
),设置infer_schema_length=0
为polars,在阅读csv时使用string作为默认类型:这是ritchie46's more detailed answer的TLDR。我把它分解成一个单独的答案,因为他的代码片段解决了 any 数据类型的一般情况,而不是将所有数据类型都读取为字符串的特殊但常见的情况。