PYTHON:如何将同名的项加在一起,然后将它们添加到列表中以找到列表的长度?

时间:2019-03-18 17:57:57

标签: python list function grouping

我在不同动物的文件中有一个列表,该列表已打开并在函数中读取。

例如,我的列表是:

Cats, Dogs, Cows, Cows, Cows, Sheep, Dogs, Sheep, etc.

如何将它们放在一个列表中,将相同的动物分组在一起,并返回列表中每只动物的数量,例如我想要的该列表:

List = (1, 2, 3, 2)

这将使我能够计算出这个新列表的长度,并给出有多少种不同的动物。

在可能的情况下不使用集。

而且,因为它具有某种功能,所以我无法具体说明每只动物。

3 个答案:

答案 0 :(得分:1)

您可以使用从列表中实例化的collections.Counter对象的值:

from collections import Counter
l = ['Cats', 'Dogs', 'Cows', 'Cows', 'Cows', 'Sheep', 'Dogs', 'Sheep']
print(list(Counter(l).values()))

这将输出:

[1, 2, 3, 2]

答案 1 :(得分:1)

以下内容使用熊猫创建带有列表的DataFrame。

然后,您可以使用pandas value_counts函数,该函数返回包含唯一动物计数的系列。

import pandas as pd

myAnimals = {'Animals': ['Cats', 'Dogs', 'Cows', 'Cows', 'Cows', 'Sheep', 'Dogs', 'Sheep']}
myList = pd.DataFrame(myAnimals)

pd.value_counts(myList['Animals'].values)

我发现此方法的输出更加简单明了:

Cows     3
Sheep    2
Dogs     2
Cats     1

有关更多信息,请参见value_counts

答案 2 :(得分:0)

您可以使用来自熊猫的groupby

    import pandas as pd

    listOfAnimalsDF = pd.DataFrame({"Animal": ["Cats", "Dogs", "Cows", "Cows", "Cows", "Sheep", "Dogs", "Sheep"]})
    grouped = listOfAnimalsDF.groupby(by="Animal")

    print(grouped.groups)

有关pandas.DataFrame.groupby

的更多信息