如何以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
相关产品推荐
相关产品推荐

