求Polars中numpy.tile函数的等效实现方案
Polars 实现类似 numpy.tile 的功能
假设我们有如下初始DataFrame:
import polars as pl df = pl.DataFrame({"col1": [1, 2, 3], "col2": [4, 5, 6]})
要实现将整个DataFrame重复指定次数(比如2次)的效果,有以下几种简洁的实现方式:
方法1:使用 pl.concat 重复拼接
这是最直观的方式,直接将原DataFrame多次放入列表后拼接:
# 重复2次 df_tiled = pl.concat([df] * 2) print(df_tiled)
输出结果:
shape: (6, 2) ┌──────┬──────┐ │ col1 ┆ col2 │ │ --- ┆ --- │ │ i64 ┆ i64 │ ╞══════╪══════╡ │ 1 ┆ 4 │ │ 2 ┆ 5 │ │ 3 ┆ 6 │ │ 1 ┆ 4 │ │ 2 ┆ 5 │ │ 3 ┆ 6 │ └──────┴──────┘
方法2:使用 repeat + explode 对整行操作
通过构造重复的索引,再展开行来实现:
df_tiled = df.with_row_index().select( pl.all().repeat(2).explode() ).drop("index") print(df_tiled)
这种方式适合需要对行级进行重复操作的场景,同样能得到目标结果。
方法3:使用 extend 方法(原地修改)
如果不需要保留原DataFrame,可以直接原地扩展:
df.extend(df) print(df)
执行后原DataFrame会被修改为重复后的结果。
内容的提问来源于stack exchange,提问作者Andi
相关产品推荐
相关产品推荐

