在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
相关产品推荐
相关产品推荐

