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

如何根据repeats列指定次数重复Polars DataFrame的每一行?

根据Polars DataFrame中repeats列重复对应行的正确实现

原始DataFrame代码

let mut df = df! (
    "start" => &[6, 3, 1],
    "end" => &[7, 4, 2],
    "repeats" => &[1, 0, 2],
)?.sort(["start", "end"], false)?;

需求

根据repeats列的数值,重复对应行指定次数:

  • repeats=1:对应行重复1次(最终保留2行)
  • repeats=0:对应行直接移除
  • repeats=2:对应行重复2次(最终保留3行)

错误尝试及报错

尝试的代码:

df.with_column(
    all().repeat_by(col("repeats")).explode()
);

报错信息:

the trait `AsRef<str>` is not implemented for `Expr`

正确实现方法

方法1:通过select生成新DataFrame

use polars::prelude::*;

let df_repeated = df
    .select(all().repeat_by(col("repeats")))
    .explode(all())?;

方法2:通过with_columns更新列后展开

use polars::prelude::*;

let df_repeated = df
    .with_columns(all().repeat_by(col("repeats")))
    .explode(all())?;

错误原因说明

  1. 方法调用错误:原代码使用with_column(单数),该方法仅支持添加单个列的表达式;而all().repeat_by(...)会生成对应所有列的表达式集合,需使用with_columns(复数)方法。
  2. 逻辑链问题:explode()需要作用于所有展开后的数组列,通过explode(all())可以一次性展开所有由repeat_by生成的数组列,得到每行重复指定次数的结果。

内容的提问来源于stack exchange,提问作者The Unfun Cat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:57:23