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

如何在Polars中以纯Polars方式将两个列表打包成结构体?

纯Polars方式实现列表元素配对打包

要实现两个列表元素按位置一一对应打包,无需借助Python的lambda或zip,可以用Polars内置的列表操作表达式完成,性能更优且符合纯Polars的向量化风格:

简洁实现方案

import polars as pl

df = pl.DataFrame({
    "first_name": [["John", "Jane", "Alice"]],
    "score": [[70, 80, 90]]
})

# 直接将两个列表按位置配对后转为字典
df = df.with_columns(
    l=pl.list.zip_with(pl.col("first_name"), pl.col("score")).list.to_dict()
)

print(df)

分步解释

  • pl.list.zip_with(col1, col2):Polars内置的向量化函数,将两个列表的对应位置元素配对成子列表,比如把["John", "Jane"]和[70,80]转为[["John",70], ["Jane",80]]
  • .list.to_dict():将配对后的子列表直接转换为字典,自动把每个子列表的第一个元素作为键,第二个作为值,和原代码dict(zip(...))的输出结果完全一致

可选的结构化中间步骤

如果需要更明确的字段定义,可以先将配对元素转为结构体再转字典,可读性更强:

df = df.with_columns(
    l=pl.list.zip_with(pl.col("first_name"), pl.col("score"))
        .list.eval(pl.struct(name=pl.element()[0], score=pl.element()[1]))
        .list.to_dict()
)

优势对比

原代码使用map_elements调用Python函数,属于逐行的Python层面操作,在处理大数据集时性能会受限;纯Polars方案全程用内置向量化表达式,避免了Python循环开销,执行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:16:05