我在不同动物的文件中有一个列表,该列表已打开并在函数中读取。
例如,我的列表是:
Cats, Dogs, Cows, Cows, Cows, Sheep, Dogs, Sheep, etc.
如何将它们放在一个列表中,将相同的动物分组在一起,并返回列表中每只动物的数量,例如我想要的该列表:
List = (1, 2, 3, 2)
这将使我能够计算出这个新列表的长度,并给出有多少种不同的动物。
在可能的情况下不使用集。
而且,因为它具有某种功能,所以我无法具体说明每只动物。
答案 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)
的更多信息