如何使用Python在列表中查找常见值



我有一个数据帧,如下所示:

names
year      name
0 1990 'a', 'b', 'c'
1 2001 'a', 'd', 'c'
2 2004 'e', 'b', 'c'

我想在这样的名称中找到常见的值,

c:3, a:2, b:2, d:1, e:1

我不知道该如何处理

但我想到的是将名称列转换为列表:

names_list = name['name'].tolist()
names_list = ['a', 'b', 'c', 'a', 'd', 'c', 'e', 'b', 'c']

然后,使用我在另一篇文章中找到的以下函数来获得最常见的值:

def most_common(lst):
return max(set(lst), key=lst.count)
most_common(names_list)
'c'

它只给出了一个最常见的值,但我试图从列表中至少得到前三个值。我该怎么做?

让我们在splitexplode之后执行mode

df.name.str.split(', ').explode().mode()

返回计数

df.name.str.split(', ').explode().value_counts() # if only would like the highest count , 
#df.name.str.split(', ').explode().value_counts().sort_values().tail(1)

如果您有

names_list = ['a', 'b', 'c', 'a', 'd', 'c', 'e', 'b', 'c']

那么您可以使用集合。计数器跟随方式:

import collections
names_list = ['a', 'b', 'c', 'a', 'd', 'c', 'e', 'b', 'c']
occurs = collections.Counter(names_list)
print(occurs)

输出:

Counter({'c': 3, 'a': 2, 'b': 2, 'e': 1, 'd': 1})

注意,collections.Counterdict的子类,因此occurs.keys().values().items()

最新更新