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

如何在Polars DataFrame中按条件修改指定行的列值并保留原结构

在Polars DataFrame中修改满足条件的行并保留完整结构

要实现只修改特定条件的行、同时保留原DataFrame完整结构的需求,不用先筛选再合并,直接用Polars的条件表达式就能完成:

方法实现

import polars as pl

# 初始化原DataFrame
df = pl.DataFrame(
    {
        "a": [0, 1, 2, 3],
        "b": [0.5, 4, 10, 13],
        "c": ["foo", "foo", "foo", "foo"],
    }
)

# 对满足条件的行修改列c的值
df_updated = df.with_columns(
    pl.when(pl.col("a") == 1)
      .then(pl.lit("baz"))  # 满足条件时设置为"baz"
      .otherwise(pl.col("c"))  # 不满足条件时保留原值
      .alias("c")  # 替换原列"c"
)

print(df_updated)

输出结果

shape: (4, 3)
┌─────┬──────┬──────┐
│ a   ┆ b    ┆ c    │
│ --- ┆ ---  ┆ ---  │
│ i64 ┆ f64  ┆ str  │
╞═════╪══════╪══════╡
│ 0   ┆ 0.5  ┆ foo  │
│ 1   ┆ 4.0  ┆ baz  │
│ 2   ┆ 10.0 ┆ foo  │
│ 3   ┆ 13.0 ┆ foo  │
└─────┴──────┴──────┘

补充说明

如果需要的是对字符串内容做替换(而非直接赋值固定值),可以把then里的pl.lit("baz")换成字符串替换逻辑:

df_updated = df.with_columns(
    pl.when(pl.col("a") == 1)
      .then(pl.col("c").str.replace("foo", "baz"))
      .otherwise(pl.col("c"))
      .alias("c")
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:37:47