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

Pandas如何统计存储字典列表的列中各独立值的出现次数

解决方案

value_counts()默认按单元格整体值统计频次,要统计所有嵌套字典内的独立name值,只需要先把嵌套结构拆成一维的名字序列,再做频次统计即可,下面给两种可直接运行的实现:

方法1:列表推导式写法(小数据量简单直观)

通过两层遍历直接提取所有名字,转成Series后统计,不需要记忆特殊API:

import pandas as pd

# 提取所有name值并统计频次,自动跳过非字典格式的异常元素
name_counts = pd.Series(
    [d.get("name") for cell_list in df["col1"] for d in cell_list if isinstance(d, dict)]
).value_counts()
  • 优点:代码逻辑直白好懂,上手快
  • 适用场景:万行以内的小数据集

方法2:explode向量化写法(大数据量性能更优)

用pandas原生的explode方法先把列表里的每个字典拆成独立行,再取值统计,属于pandas向量化操作,大样本下运行速度远快于循环写法:

name_counts = (
    df["col1"]
    .explode()  # 将列表中每个字典拆分为单独的行
    .apply(lambda x: x.get("name") if isinstance(x, dict) else None)
    .dropna()  # 自动跳过空值、格式异常的无效数据
    .value_counts()
)
  • 优点:性能好,链式操作逻辑清晰,方便后续追加其他数据处理逻辑
  • 适用场景:十万行以上的较大数据集

运行结果示例

基于你给出的样例数据(修正Barbara缺失的闭合单引号语法问题后),运行得到的统计结果如下:

John        2
Mark        2
Susan       1
Mr.Bean     1
The Smiths  1
Barbara     1
Poly        1
Nick        1
Name: count, dtype: int64

提示:如果数据中存在空列表、缺失值、非字典格式的脏数据,上述代码里加的类型判断和dropna()逻辑会自动跳过异常内容,不会中断代码运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:57:26