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

如何在Polars中实现替换前n行特定值的等效操作?

Polars中替换前n行为特定值的等效操作

要实现和Pandas里df_pd.iloc[0:5] = float("nan")相同的效果,在Polars里可以通过条件表达式或update方法完成,以下是具体示例:

方法1:使用条件表达式(推荐,符合Polars不可变设计)

通过pl.when()判断行索引范围,对前n行替换为目标值(这里用None对应Polars的空值,等价于Pandas的NaN):

import polars as pl

df = pl.DataFrame({"test": range(10)})

# 替换前5行为空值
df_updated = df.with_columns(
    pl.col("test").when(pl.row_index() < 5).then(None).keep_name()
)

print(df_updated)

运行结果:

shape: (10, 1)
┌──────┐
│ test │
│ ---  │
│ i64  │
├──────┤
│ null │
│ null │
│ null │
│ null │
│ null │
│ 5    │
│ 6    │
│ 7    │
│ 8    │
│ 9    │
└──────┘

方法2:使用update方法(原地修改风格)

如果习惯Pandas的原地修改逻辑,也可以用update()配合过滤器实现:

import polars as pl

df = pl.DataFrame({"test": range(10)})

# 原地更新前5行为空值
df.update(pl.col("test").set(None).filter(pl.row_index() < 5))

print(df)

注意点

  • Polars默认采用不可变数据结构,推荐使用方法1返回新DataFrame的方式,避免原地修改带来的副作用;
  • 若需要替换为其他特定值,只需把代码中的None换成目标值即可(比如0、"custom_value"等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:24:56