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

如何统计Pandas含列表值的列中各唯一值的出现次数?

统计DataFrame列表列中元素的出现次数

这里提供两种简单直接的实现方式:

方法一:用Pandas的explode + value_counts

这是最简洁的Pandas原生方法,适合快速统计:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'items': [['apple', 'banana'], ['apple', 'orange'], ['banana', 'orange', 'apple']]
})

# 展开列表列的每个元素为单独行,再统计频次
element_counts = df['items'].explode().value_counts()

print(element_counts)

输出结果:

apple     3
banana    2
orange    2
Name: items, dtype: int64

explode()会把每个列表里的元素拆分成独立行,value_counts()自动统计每个唯一值的出现次数,结果是一个按频次降序排列的Series。

方法二:用itertools.chain + Counter

如果需要更灵活的元素处理(比如过滤空值),可以用这种方式:

import pandas as pd
from collections import Counter
import itertools

df = pd.DataFrame({
    'items': [['apple', 'banana'], ['apple', 'orange'], ['banana', 'orange', 'apple']]
})

# 将所有列表元素拼接成一个一维列表
all_elements = list(itertools.chain.from_iterable(df['items']))
# 统计每个元素的出现次数
count_dict = Counter(all_elements)

# 可选:转成DataFrame并按频次排序
count_df = pd.DataFrame.from_dict(count_dict, orient='index', columns=['count']).sort_values('count', ascending=False)

print(count_df)

输出结果:

count
apple       3
banana      2
orange      2

注意事项

  • 如果你的列表列中存在空列表或None值,建议先通过df = df[df['items'].notna()]过滤掉空行,避免统计异常。
  • 如果列表内有重复元素(比如单个列表里出现多次同一元素),两种方法都会如实统计总次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:10:51