簡體   English   中英

PYTHON:如何將同名的項加在一起,然后將它們添加到列表中以找到列表的長度?

[英]PYTHON: How do I add items of the same name together, and add them to a list in order to find the length of the list?

我在不同動物的文件中有一個列表,該列表已打開並在函數中讀取。

例如,我的清單是:

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

如何將它們放在一個列表中,該列表將相同的動物分組在一起並返回列表中每只動物的數量,例如,我想要的該列表:

List = (1, 2, 3, 2)

然后,這將使我能夠計算出此新列表的長度,並給出有多少種不同的動物。

如果可能,不使用集。

另外,由於它具有功能,因此我無法具體說明每只動物。

您可以使用從列表中實例化的collections.Counter對象的值:

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

輸出:

[1, 2, 3, 2]

下面使用熊貓創建帶有列表的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

您可以使用熊貓的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的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM