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

如何将Polars DataFrame列类型从float64转换为int64?

解决Polars DataFrame列类型转换问题

问题分析

你尝试的代码无法运行,核心原因是Polars是不可变数据结构,所有操作都会返回新的DataFrame对象,不能像Pandas那样直接对列视图赋值。而且df.select(pl.col('foo'))返回的是一个新的单列DataFrame,不能作为赋值目标。

正确实现方式

方法1:用with_columns更新指定列(推荐)

这是Polars中修改列的标准方式,会保留所有现有列,仅更新目标列的类型:

import polars as pl
df = pl.DataFrame({"foo": [1.0, 2.0, 3.0], "bar": [11, 5, 8]})

# 转换foo列为int64,重新赋值给df
df = df.with_columns(pl.col("foo").cast(pl.Int64))

方法2:用select重新构造DataFrame

如果你需要明确指定保留的列,也可以用select,但要注意包含所有需要的列:

# 方式2-1:直接列出所有列
df = df.select(
    pl.col("foo").cast(pl.Int64),
    pl.col("bar")
)

# 方式2-2:排除目标列后再添加转换后的列(适合多列场景)
df = df.select(
    pl.all().exclude("foo"),
    pl.col("foo").cast(pl.Int64)
)

与Pandas的差异说明

Pandas支持原地修改列类型(df['foo'] = ...),但Polars的设计理念是不可变性,所有数据变换都返回新对象,因此必须将操作结果重新赋值给原变量(或新变量)才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:57:11