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

Polars中统计列表列元素个数的更优实现方法

在Polars中高效统计列表列的元素数量

在Polars里,推荐使用list.len()表达式来统计列表列的元素数量,这是Polars原生支持的矢量化操作,比你之前用的map_elements(lambda x: len(x))高效得多——map_elements是逐行调用Python函数,会带来额外的开销,而list.len()是Polars内部优化的批量处理逻辑,在数据量较大时性能差距会非常显著。

优化后的代码示例

import polars as pl

dfp = pl.DataFrame({'a': [1,2,3], 'b':[[1,2,3], [2], [5,0]]})

# 使用list.len()实现高效统计
result = dfp.with_columns(pl.col('b').list.len().alias('c'))
print(result)

输出结果

shape: (3, 3)
┌─────┬───────────┬─────┐
│ a   ┆ b         ┆ c   │
│ --- ┆ ---       ┆ --- │
│ i64 ┆ list[i64] ┆ i64 │
╞═════╪═══════════╪═════╡
│ 1   ┆ [1, 2, 3] ┆ 3   │
│ 2   ┆ [2]       ┆ 1   │
│ 3   ┆ [5, 0]    ┆ 2   │
└─────┴───────────┴─────┘

补充说明

Polars针对列表类型列提供了一整套list.*系列方法(比如list.sum()、list.mean()等),这些方法都是基于矢量化实现的,能充分利用Polars的性能优势。除非需要处理非常定制化的逻辑,否则应优先使用这些原生方法,避免使用map_elements这类逐元素处理的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:05:22