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

如何将一个Polars LazyFrame的列添加到另一个LazyFrame中?

如何将一个Polars LazyFrame的列添加到另一个LazyFrame中?

嘿,我懂你碰到的问题啦!with_columns()这个方法确实不能直接传整个LazyFrame,它需要的是列表达式的可迭代对象,比如单个列或者多列的表达式列表。不过有几个简单的办法能搞定这个需求:

方法一:用hstack()(最直接的横向拼接)

hstack()就是专门用来横向合并行数相同的DataFrame/LazyFrame的,用法超简单:

def append_columns(df: pl.LazyFrame):
    # 建议给df2指定列名,避免默认的"column_0"这类名字混乱
    df2 = pl.LazyFrame([1,2], schema=["new_col"])
    return df.hstack([df2])

只要两个LazyFrame的行数完全一致,这个方法就能直接把df2的所有列追加到df后面。

方法二:用with_columns()配合列表达式

如果你更习惯用with_columns(),可以把df2的列转换成表达式传入,比如用pl.all()选中df2的所有列:

def append_columns(df: pl.LazyFrame):
    df2 = pl.LazyFrame([1,2], schema=["new_col"])
    # 把df2的所有列作为表达式传入with_columns
    return df.with_columns(df2.select(pl.all()))

或者也可以直接指定df2的列名来获取表达式:

return df.with_columns(pl.col(df2.columns))

小提醒

  • 一定要确保两个LazyFrame的行数完全相同,不然拼接的时候会报错哦。
  • 如果两个LazyFrame有重名的列,记得用.alias()给其中一方的列重命名,避免列名冲突导致的问题。

备注:内容来源于stack exchange,提问作者Arun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 08:53:08