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

在Pandas中处理列表列:统计零值数量与提取末尾元素

高效处理含变长列表的DataFrame列计算

问题场景

给定如下结构的DataFrame,Score列包含不同长度的列表,需要新增两列:

  • 零值总数:每行Score列表中0的个数
  • 最后一个元素:每行Score列表的最后一个元素
    且需适配200万+行的大规模数据,避免低效的逐行循环。

原始DataFrame构造代码

import pandas as pd
score = [[0,1,0,3],[0,2,6,4,0,0],[0,0,0],[0,4,4,2,1,0,0,0]]
group = ["A", "B", "C", "D"]
df = pd.DataFrame([group, score]).T
df.columns = ['Group', 'Score']

高效解决方案

直接使用Python列表推导式生成新列,这是处理此类场景性能最优的方案之一,远快于iterrows()/apply()(尤其是大规模数据下):

# 生成零值总数列
df['Zero_Count'] = [lst.count(0) for lst in df['Score']]

# 生成最后一个元素列
df['Last_Element'] = [lst[-1] for lst in df['Score']]

兼容空列表的版本

如果Score列存在空列表,可添加异常处理避免报错:

df['Zero_Count'] = [lst.count(0) if lst else 0 for lst in df['Score']]
df['Last_Element'] = [lst[-1] if lst else None for lst in df['Score']]

性能说明

列表推导式是Python原生的批量操作,相比逐行循环遍历,在200万行数据下可将处理时间从分钟级压缩至秒级。若追求极致性能,可结合numba库对列表推导逻辑进行JIT编译,但对于绝大多数业务场景,上述方案已足够高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:05:30