如何将一个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
相关产品推荐
相关产品推荐

