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

在Polars中解析带千位分隔符的数值数据

解决方案

1. 关闭自动类型推断,强制所有列以字符串读取

要让read_csv完全不自动推断列类型,直接将所有列读取为字符串,可通过dtype参数指定全局类型为pl.Utf8,同时配合infer_schema_length=0彻底关闭推断逻辑:

import polars as pl

# 读取UTF-16编码的TSV文件,所有列强制为字符串类型
df = pl.read_csv(
    "target_file.tsv",
    separator="\t",
    encoding="utf-16",
    dtype=pl.Utf8,
    infer_schema_length=0
)

2. 批量转换带千位分隔符的数值列

str.strip_chars(",")仅能移除字符串首尾的逗号,无法处理中间的千位分隔符,因此必须用str.replace_all(",", "")全局替换逗号后,再转换为整数类型。如果有多列需要处理,可批量操作:

# 指定需要转换的数值列列表
numeric_columns = ["B", "C", "D"]

# 批量清洗千位分隔符并转换为整数
df = df.with_columns(
    pl.col(numeric_columns)
    .str.replace_all(",", "")
    .cast(pl.Int64)
)

3. 关于显式指定schema失败的原因

直接在read_csv中指定某列为pl.Int64时,Polars会尝试直接解析原始文本为整数,但文本中的千位分隔符逗号会导致解析逻辑失败,因此无法完成类型转换。必须先以字符串读取,完成格式清洗后再转换类型,这是处理此类格式化数值的标准流程。

内容的提问来源于stack exchange,提问作者David Waterworth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:37:38