You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否让Polars默认将数值类型设为Float64而非Int64?

解决方案

你可以通过先获取初始推断schema,再批量修改整数类型列为Float64的方式实现需求,既不用扫描全量数据集,也无需逐个指定列:

  1. 读取少量数据生成初始schema
    先读取前N行数据(比如100行),让Polars自动推断各列的初始类型:

    import polars as pl
    
    # 读取样本数据获取初始schema
    df_sample = pl.read_excel("your_spreadsheet.xlsx", n_rows=100)
    
  2. 批量修改schema中的整数类型
    遍历初始schema,将所有被识别为整数类型的列替换为Float64:

    # 生成自定义schema:整数列转Float64,其他列保留原类型
    custom_schema = {
        col: pl.Float64 if dtype.is_integer() else dtype
        for col, dtype in df_sample.schema.items()
    }
    
  3. 使用修改后的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 18:22:15