如何获得熊猫数据框中列表中每个元素的频率分布?

时间:2019-11-30 14:57:31

标签: python pandas dataframe

我正在尝试获取此数据帧中标签的频率分布。

enter image description here

问题在于每一行都包含一个标签列表,而不仅仅是一个。因此,我不能使用

df['Tags'].value_counts()

那我该怎么办?

1 个答案:

答案 0 :(得分:2)

对于0.25+的熊猫,请使用Series.explode

s = df['Tags'].explode().value_counts()

使用DataFrame构造函数和DataFrame.stack的另一种解决方案也适用于0.25下的版本:

s = pd.DataFrame(df['Tags'].tolist()).stack().value_counts()

或者可以将纯python与Counter并进行展平:

from collections import Counter

s = pd.Series(Counter([y for x in df['Tags'] for y in x]))

示例

df = pd.DataFrame({'Tags':[['a','b'],['a','b','c'],['c','b','c'], ['c']]})
s = df['Tags'].explode().value_counts()
print(s)
c    4
b    3
a    2
Name: Tags, dtype: int64