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

如何以Polars的惯用方式更新DataFrame中的单个值?

在Polars中更新单个值的惯用方式

Polars基于不可变数据结构设计,不会像Pandas那样支持原地修改单个值,而是通过返回新DataFrame的方式完成更新,以下是两种惯用实现方式:

方式一:条件表达式结合with_columns

这是贴合Polars列式计算风格的写法,通过生成行索引匹配目标位置,用条件逻辑替换指定值:

import polars as pl

df = pl.DataFrame({"col1": [1, 2, 3], "col2": [4, 5, 6]})

# 更新索引为2的行(第三行)中col2的值为99
updated_df = df.with_columns(
    pl.when(pl.int_range(0, pl.count()) == 2)
    .then(99)
    .otherwise(pl.col("col2"))
    .alias("col2")
)

print(updated_df)

输出结果:

shape: (3, 2)
┌──────┬──────┐
│ col1 ┆ col2 │
│ ---  ┆ ---  │
│ i64  ┆ i64  │
╞══════╪══════╡
│ 1    ┆ 4    │
│ 2    ┆ 5    │
│ 3    ┆ 99   │
└──────┴──────┘

方式二:使用set方法(直观写法)

Polars提供了更直白的set方法,直接指定目标行索引、列名和新值即可返回修改后的新DataFrame:

import polars as pl

df = pl.DataFrame({"col1": [1, 2, 3], "col2": [4, 5, 6]})

updated_df = df.set(row_index=2, column="col2", value=99)

print(updated_df)

输出结果与上述一致。

注意:Polars的所有修改操作默认不会改变原DataFrame,而是返回新对象,这种设计是为了适配高效并行计算场景,避免原地修改带来的副作用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:45:06