能否让Polars默认将数值类型设为Float64而非Int64?
解决方案
你可以通过先获取初始推断schema,再批量修改整数类型列为Float64的方式实现需求,既不用扫描全量数据集,也无需逐个指定列:
读取少量数据生成初始schema
先读取前N行数据(比如100行),让Polars自动推断各列的初始类型:import polars as pl # 读取样本数据获取初始schema df_sample = pl.read_excel("your_spreadsheet.xlsx", n_rows=100)批量修改schema中的整数类型
遍历初始schema,将所有被识别为整数类型的列替换为Float64:# 生成自定义schema:整数列转Float64,其他列保留原类型 custom_schema = { col: pl.Float64 if dtype.is_integer() else dtype for col, dtype in df_sample.schema.items() }使用修改后的schema读取完整数据
用调整好的schema读取整个文件,此时所有原整数列会被解析为Float64:df = pl.read_excel("your_spreadsheet.xlsx", schema=custom_schema)
灵活调整
如果有部分整数列确实不需要转为Float64(比如ID列、计数列),可以在生成schema时排除这些列:
# 定义无需转换的整数列 exclude_int_cols = ["user_id", "order_count"] custom_schema = { col: pl.Float64 if (dtype.is_integer() and col not in exclude_int_cols) else dtype for col, dtype in df_sample.schema.items() }
这个方法同样适用于CSV等其他文件格式,只需将read_excel替换为对应的read_csv等函数即可。
内容的提问来源于stack exchange,提问作者anallaser
相关产品推荐
相关产品推荐

