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

如何用Polars将除指定列外的列值合并为列表并新增列

解决方案

直接用Polars的向量化操作实现,无需逐个指定列名,代码如下:

import polars as pl

data = {"Name": ['Name_A', 'Name_B','Name_C'], "val_1": ['a',None, 'a'],"val_2": [None,None, 'b'],"val_3": [None,'c', None],"val_4": ['c',None, 'g'],"val_5": [None,None, 'i']}
df = pl.DataFrame(data)

# 新增combined列,合并除Name外所有列的非空值为列表
result_df = df.with_columns(
    combined=pl.concat_list(pl.all().exclude("Name")).list.filter(pl.element().is_not_null())
)

print(result_df)

代码解释

  • pl.all().exclude("Name"):自动选中除Name外的所有列,不管有多少个val_N格式的列都能适配
  • pl.concat_list(...):将每行的多列值合并为一个列表(包含空值)
  • .list.filter(pl.element().is_not_null()):过滤列表中的空值,只保留非空元素
  • with_columns:将新生成的combined列添加到原DataFrame中

运行结果

shape: (3, 7)
┌────────┬───────┬───────┬───────┬───────┬───────┬───────────────────┐
│ Name   ┆ val_1 ┆ val_2 ┆ val_3 ┆ val_4 ┆ val_5 ┆ combined          │
│ ---    ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---   ┆ ---               │
│ str    ┆ str   ┆ str   ┆ str   ┆ str   ┆ str   ┆ list[str]         │
╞════════╪═══════╪═══════╪═══════╪═══════╪═══════╪═══════════════════╡
│ Name_A ┆ a     ┆ null  ┆ null  ┆ c     ┆ null  ┆ ["a", "c"]        │
│ Name_B ┆ null  ┆ null  ┆ c     ┆ null  ┆ null  ┆ ["c"]             │
│ Name_C ┆ a     ┆ b     ┆ null  ┆ g     ┆ i     ┆ ["a", "b", "g", "i"] │
└────────┴───────┴───────┴───────┴───────┴───────┴───────────────────┘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:30:10