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

如何在Polars中基于其他列按条件填充新列?

使用Polars实现基于条件添加新列的功能

要实现和你提供的Pandas代码相同的逻辑(新列c默认取a的值,当b等于4时取b的值),Polars可以通过**条件表达式结合with_columns**完成,这也是Polars推荐的向量化操作方式。

实现代码

方法一:直接构建条件列(简洁高效)

import polars as pl

# 创建初始DataFrame
df = pl.DataFrame({'a': [1, 2], 'b': [3, 4]})

# 添加新列c,应用条件逻辑
df = df.with_columns(
    pl.when(pl.col('b') == 4)
      .then(pl.col('b'))
      .otherwise(pl.col('a'))
      .alias('c')
)

方法二:先赋值默认值再更新(和Pandas逻辑更贴近)

如果你习惯先给新列赋默认值再修改符合条件的行,可以用以下方式:

import polars as pl

df = pl.DataFrame({'a': [1, 2], 'b': [3, 4]})

# 先给c赋值为a的默认值
df = df.with_columns(c=pl.col('a'))
# 对b==4的行,将c更新为b的值
df = df.with_columns(
    pl.when(pl.col('b') == 4)
      .then(pl.col('b'))
      .otherwise(pl.col('c'))
      .alias('c')
)

执行结果

两种方法执行后都会得到如下结果:

abc
131
244

逻辑说明

  • pl.when(condition).then(value).otherwise(default):Polars的条件表达式,会逐行判断条件,满足时返回then的值,否则返回otherwise的值。
  • with_columns:用于向DataFrame添加或修改列,Polars是不可变数据结构,所以需要将返回的新DataFrame重新赋值给变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:35:15