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

Polars:Series转列广播报错,求适配新版本的正确写法

Polars 1.x中为每行添加Series列的解决方法

问题描述

在Polars < 1版本中可正常运行的代码:

df.with_columns(pl.Series('k_list', [0, 1])).explode('k_list')

在Polars 1.x版本中运行会报错:Séries k_list, length 2 doesn't match the dataframe height of ...,原因是新版本对列长度的校验更严格,不再允许长度不匹配的Series直接广播。

解决方法

要为DataFrame的每一行添加包含指定元素的列表列,有两种实用方式:

  • 使用pl.lit()包装列表,Polars会自动将列表广播到每一行:

    df.with_columns(k_list=pl.lit([0, 1])).explode('k_list')
    
  • 用pl.repeat()显式生成与DataFrame行数一致的列,每个元素为目标列表:

    df.with_columns(k_list=pl.repeat([0, 1], n=len(df))).explode('k_list')
    

原理说明

Polars 1.x要求新增列的长度必须与DataFrame的行数完全匹配。pl.lit([0,1])会将列表作为单个元素处理,自动广播到所有行;pl.repeat()则是直接生成对应行数的列,每个位置都填充目标列表。两种方式生成的列经过explode()展开后,均可得到与旧版本代码相同的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:57:04