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

如何拼接列存在差异的Polars DataFrame 解决shape error报错

Polars列不一致数据框拼接方案

报错原因

Polars 原生pl.concat()默认执行严格的行对齐拼接,要求所有输入 DataFrame 的列集合、列顺序、列数据类型完全匹配,只要存在列数/列名差异就会抛出shape error,不会像 pandas 那样默认自动对齐补缺失值。

解决方法

调用pl.concat()时传入how="diagonal"参数,即可实现和 pandas 默认pd.concat()一致的拼接效果:自动取所有输入表的列并集,单表缺失的列自动填充null值。
示例代码:

import polars as pl

# 测试样例:3个列不完全一致的DataFrame
df1 = pl.DataFrame({"id": [1, 2], "name": ["a", "b"]})
df2 = pl.DataFrame({"id": [3, 4], "age": [25, 30]})  # 缺少name列,多age列
df3 = pl.DataFrame({"id": [5], "name": ["c"], "age": [28], "city": ["beijing"]})  # 多city列

# 对角线拼接,自动对齐列
df_concat = pl.concat([df1, df2, df3], how="diagonal")

拼接后的结果共包含id/name/age/city4列,各表缺失列的对应位置自动填充null。

补充说明

  • 该参数仅适用于上下方向的行拼接场景,如果是左右方向的列拼接,列数不一致本身不符合逻辑,无对应兼容方案。
  • 如果需要严格校验同名列的数据类型完全一致,可额外传入strict=True,此时同名列类型不兼容时会直接抛出错误,避免隐式类型转换导致的数据异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:33:09