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

如何在Polars中使用符合条件的行实现向前填充?

解决方案

你可以通过两步实现这个需求:先提取仅flag == 1行的value并向前填充,再用这个填充后的结果替换原value列中的空值。具体代码如下:

import polars as pl

df = pl.DataFrame({'value': [1,2,3,4,5,None,None], 'flag': [0,1,1,1,0,0,0]})

result_df = df.with_columns(
    value=pl.col("value").fill_null(
        # 仅保留flag=1的value,其余设为null,再向前填充
        pl.col("value").where(pl.col("flag") == 1).forward_fill()
    )
)

print(result_df)

代码解释

  1. pl.col("value").where(pl.col("flag") == 1):生成一个临时列,仅保留flag == 1行的value值,其他行(包括flag == 0的非空值)都设为null。
  2. .forward_fill():对上述临时列执行向前填充,这样每个位置都会得到最近的flag == 1行的value值。
  3. pl.col("value").fill_null(...):用填充后的临时列值替换原value列中的null,非空值保持不变。

执行后得到的结果符合预期:

┌───────┬──────┐
│ value ┆ flag │
│ ---   ┆ ---  │
│ i64   ┆ i64  │
╞═══════╪══════╡
│ 1     ┆ 0    │
│ 2     ┆ 1    │
│ 3     ┆ 1    │
│ 4     ┆ 1    │
│ 5     ┆ 0    │
│ 4     ┆ 0    │
│ 4     ┆ 0    │
└───────┴──────┘

内容的提问来源于stack exchange,提问作者Phil-ZXX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:33:10