Python 如何获得数据框中列表中每个元素的频率分布?
我试图得到这个数据框中标签的频率分布 问题是每一行都包含一个标记列表,而不仅仅是一个。因此,我不能使用Python 如何获得数据框中列表中每个元素的频率分布?,python,pandas,dataframe,Python,Pandas,Dataframe,我试图得到这个数据框中标签的频率分布 问题是每一行都包含一个标记列表,而不仅仅是一个。因此,我不能使用 df['Tags'].value_counts() 那么我该怎么做呢?对于熊猫0.25+使用: 另一个使用DataFrame构造函数的解决方案,也适用于0.25下的版本: s = pd.DataFrame(df['Tags'].tolist()).stack().value_counts() 或者可以将纯python与计数器一起使用并展平: from collections impor
df['Tags'].value_counts()
那么我该怎么做呢?对于熊猫0.25+使用:
另一个使用DataFrame构造函数的解决方案,也适用于0.25下的版本:
s = pd.DataFrame(df['Tags'].tolist()).stack().value_counts()
或者可以将纯python与计数器
一起使用并展平:
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
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