如何在Python中统计DataFrame列表型列内元素的value_counts?
解决方法
直接用 pandas 的 explode() 方法把列表列拆分成多行,再用 value_counts() 统计单个元素的出现次数即可,代码示例如下:
1. 构造示例DataFrame
import pandas as pd df = pd.DataFrame({ 'X': [101, 200, 32, 41, 202], 'Y': [['A'], ['A','O'], ['B'], ['A','AB','O'], ['A']] })
2. 统计单个元素出现次数
# 展开Y列的列表,再统计 result = df['Y'].explode().value_counts() print(result)
运行后得到的结果:
A 4 O 2 B 1 AB 1 Name: Y, dtype: int64
如果你的 pandas 版本低于0.25(explode() 是0.25版本新增的),可以用 itertools.chain 来扁平化列表:
from itertools import chain # 把Y列的所有列表元素合并成一个迭代器,再转成Series统计 result = pd.Series(list(chain.from_iterable(df['Y']))).value_counts() print(result)
这个方法也能得到完全一致的结果。
内容的提问来源于stack exchange,提问作者azade0
相关产品推荐
相关产品推荐

