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

Python Polars中横向拼接LazyFrames时触发ValueError错误

Polars LazyFrame横向拼接报错的解决方法

在Polars 0.19.12版本中,pl.concat对LazyFrame确实不支持how="horizontal"参数,这是Lazy API和Eager API的差异点之一。要实现LazyFrame的横向拼接,推荐使用hstack方法——这是专门用于横向合并的API,同时支持Eager和Lazy模式。

解决代码示例

import polars as pl

df_h1 = pl.DataFrame({"l1": [1, 2], "l2": [3, 4]}).lazy()
df_h2 = pl.DataFrame({"r1": [5, 6], "r2": [7, 8], "r3": [9, 10]}).lazy()

# 使用hstack实现横向拼接
result = df_h1.hstack(df_h2)
# 执行延迟计算并输出结果
print(result.collect())

输出结果:

shape: (2, 5)
┌─────┬─────┬─────┬─────┬──────┐
│ l1  ┆ l2  ┆ r1  ┆ r2  ┆ r3   │
│ --- ┆ --- ┆ --- ┆ --- ┆ ---  │
│ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64  │
╞═════╪═════╪═════╪═════╪══════╡
│ 1   ┆ 3   ┆ 5   ┆ 7   ┆ 9    │
│ 2   ┆ 4   ┆ 6   ┆ 8   ┆ 10   │
└─────┴─────┴─────┴─────┴──────┘

补充说明

  • 若坚持使用pl.concat,可以先将LazyFrame转为Eager DataFrame再操作,但这会失去Lazy模式延迟计算的优势,不推荐:
    result = pl.concat([df_h1.collect(), df_h2.collect()], how="horizontal")
    
  • hstack要求两个LazyFrame的行数一致,否则会报错,这和Eager模式下的横向拼接规则一致。

内容的提问来源于stack exchange,提问作者Cael Hasse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:10:03