【问题标题】: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?PYTHON:如何将同名的项目添加在一起,并将它们添加到列表中以查找列表的长度?
【发布时间】:2019-03-18 17:57:56
【问题描述】:

我在一个不同动物的文件中有一个列表,可以在一个函数中打开和读取。

例如我的清单是:

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

我如何将这些放在一个列表中,该列表会将相同的动物组合在一起并返回列表中每个动物的数量,例如我想要的这个列表:

List = (1, 2, 3, 2)

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

尽可能不使用集合。

另外,因为它在一个函数中,我无法具体说明每种动物。

【问题讨论】:

标签: python list function grouping


【解决方案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]

【讨论】:

    【解决方案2】:

    下面使用 pandas 为您的列表创建一个 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

    【讨论】:

    • 请提供一些关于您的代码的解释。最好提供一些关于您的解决方案的文字描述,而不是仅仅在 OP 上扔代码。
    • 添加了额外的解释。感谢您的反馈。 @Szymon。这是我对 stackoverflow 的第一个回应。
    【解决方案3】:

    你可以使用 pandas 中的 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的更多信息

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2021-02-10
      • 2014-06-03
      • 1970-01-01
      • 2017-03-26
      • 2016-02-11
      • 1970-01-01
      • 2017-07-14
      • 2017-02-20
      相关资源
      最近更新 更多