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

Polars中List[str]列list.concat行为异常:与List[i64]表现差异问询

这是Polars的预期行为

原因解析

Polars的list.concat方法设计时,会优先将传入的字符串列表解析为列名集合,而非字面量字符串的集合。这是因为该方法的核心用途之一是拼接DataFrame中其他列的列表型数据(例如pl.col("libs").list.concat([pl.col("other_list_col1"), pl.col("other_list_col2")]))。

当你执行pl.col("libs").list.concat(["gg", "hh"])时,Polars会尝试查找名为"gg"和"hh"的列,由于你的DataFrame中不存在这些列,因此抛出ColumnNotFoundError。报错信息中提到"dd"是Polars内部解析逻辑的细节(不同版本可能有差异),核心原因还是列名查找失败。

而你提到的数值列表可以正常执行,是因为Polars对数值类型做了特殊的隐式转换:数值很少被用作列名,因此Polars会自动将数值列表中的每个元素转为pl.lit()字面量表达式,从而实现拼接固定数值的效果。

正确写法

要拼接固定字符串列表,你有两种简洁的写法:

  1. 每个字符串单独用pl.lit()包装:
df.with_columns(pl.col("libs").list.concat([pl.lit("gg"), pl.lit("hh")]))
  1. 将整个字符串列表转为单个字面量列表,再传入list.concat:
df.with_columns(pl.col("libs").list.concat(pl.lit(["gg", "hh"])))

这两种写法都能正确将固定字符串追加到libs列的每个列表元素中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:05:37