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

如何用Polars表达式API将列表列转为连续元素对?

Polars高效转换列表为连续元素对的实现方法

可以用Polars表达式API高效完成这个转换,核心是利用list.chunks方法分割列表,再将每个子块转为元组,具体代码如下:

import polars as pl

pl.Config(fmt_table_cell_list_len=6, fmt_str_lengths=100)

df = pl.DataFrame({'col 1': [[1, 2, 3, 4, 5, 6],[11, 12, 13, 14, 15, 16],[21, 22, 23, 24, 25, 26]]})

# 转换操作
result_df = df.with_columns(
    pl.col("col 1")
    .list.chunks(2)  # 将每个列表分割为长度为2的连续子列表
    .list.eval(pl.element().tuple())  # 将每个子列表转为元组
    .alias("paired_col")
)

print(result_df)

执行后输出结果:

shape: (3, 2)
┌──────────────────────────┬───────────────────────────────────┐
│ col 1                    │ paired_col                        │
│ ---                      │ ---                               │
│ list[i64]                │ list[tuple[i64, i64]]             │
╞══════════════════════════╪═══════════════════════════════════╡
│ [1, 2, 3, 4, 5, 6]       │ [(1, 2), (3, 4), (5, 6)]          │
│ [11, 12, 13, 14, 15, 16] │ [(11, 12), (13, 14), (15, 16)]    │
│ [21, 22, 23, 24, 25, 26] │ [(21, 22), (23, 24), (25, 26)]    │
└──────────────────────────┴───────────────────────────────────┘

代码说明

  • list.chunks(2):按顺序将每个输入列表分割为长度为2的连续子列表,精准匹配两两分组的需求。
  • list.eval(pl.element().tuple()):对分割后的每个子列表执行转换,将列表类型转为元组类型,得到目标格式的元组列表。

这种方式基于Polars向量化表达式API实现,完全避免Python循环,性能远高于逐行处理,适合大规模数据场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:00:05