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

在Polars DataFrame中修改列的数据类型

在Polars DataFrame中修改列的数据类型

嘿,我来帮你搞定这个Polars DataFrame的类型转换问题!你手里的这个DataFrame里,列a和b都是以字符串形式存储的数字,列c是普通字符串,咱们用Polars自带的方法就能轻松调整数据类型。

先看看你给出的原始代码和DataFrame结构:

import polars as pl 
df = pl.DataFrame({
    "a":["1.2", "2.3", "5.4"], 
    "b":["0.4", "0.03", "0.12"],
    "c":["AA", "BB", "CC"]
})

对应的DataFrame结构:

┌─────┬──────┬─────┐
│ a   ┆ b    ┆ c   │
│ --- ┆ ---  ┆ --- │
│ str ┆ str  ┆ str │
╞═════╪══════╪═════╡
│ 1.2 ┆ 0.4  ┆ AA  │
│ 2.3 ┆ 0.03 ┆ BB  │
│ 5.4 ┆ 0.12 ┆ CC  │
└─────┴──────┴─────┘

方法一:指定列转换类型

最直接的方式就是用with_columns配合cast方法,把a、b列转换成浮点型,c列保持原类型不变:

# 转换a、b列为Float64类型
df_converted = df.with_columns(
    pl.col("a").cast(pl.Float64),
    pl.col("b").cast(pl.Float64)
)

# 查看转换后的列类型
print(df_converted.schema)

运行这段代码后,输出的schema会显示:

{'a': Float64, 'b': Float64, 'c': String}

小提示

如果你的数据里可能存在一些无法转换为数字的字符串,可以在cast里加上strict=False参数,这样Polars会把转换失败的值设为null,而不是直接报错:

df_converted = df.with_columns(
    pl.col("a").cast(pl.Float64, strict=False),
    pl.col("b").cast(pl.Float64, strict=False)
)

备注:内容来源于stack exchange,提问作者GH KIM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 15:58:16