【问题标题】:How to extract and sum unique words from a pandas DataFrame如何从 pandas DataFrame 中提取和求和独特的单词
【发布时间】:2020-07-28 21:16:06
【问题描述】:

考虑以下DataFrame:

df = pd.DataFrame({'animals': [['dog','cat','snake','lion','tiger'], 
                  ['dog','moose','alligator','lion','tiger'], 
                  ['eagle','moose','alligator','lion','tiger'],
                  ['cat','alligator','lion']]})

我需要提取每一个独特的动物并总结出现的次数。 输出应该是这样的:

dog             2  
cat             2  
snake           1  
lion            4  
tiger           3  
moose           2  
alligator       3  
eagle           1 

类似于 df.value_counts() 的作用。

非常感谢。

【问题讨论】:

    标签: python string pandas unique


    【解决方案1】:

    您可以使用explodevalue_counts

    df.animals.explode().value_counts()
    

    输出:

    lion         4
    tiger        3
    alligator    3
    moose        2
    cat          2
    dog          2
    eagle        1
    snake        1
    Name: animals, dtype: int64
    

    【讨论】:

      【解决方案2】:

      Counter + chain 的一种方式

      import pandas as pd
      from collections import Counter
      from itertools import chain
      
      pd.Series(Counter(chain.from_iterable(df['animals'])))
      
      dog          2
      cat          2
      snake        1
      lion         4
      tiger        3
      moose        2
      alligator    3
      eagle        1
      dtype: int64
      

      【讨论】:

        【解决方案3】:

        map/reduce 方法

        reduce(Counter.__add__, map(Counter, df.animals))
        

        或者,减少迭代次数

        reduce(lambda a,b: Counter(a) + Counter(b), df.animals)
        

        >>> pd.Series(res)
        
        dog          2
        cat          2
        snake        1
        lion         4
        tiger        3
        moose        2
        alligator    3
        eagle        1
        dtype: int64
        

        (记得先导入reducefrom functools import reduce,因为它在python3中作为内置函数被删除了)。

        【讨论】:

          【解决方案4】:

          你可以这样做:

          bb = [val for in_arr in df['animals'].tolist() for val in in_arr]
          Counter(bb)
          

          【讨论】:

            猜你喜欢
            • 2017-09-11
            • 2021-03-02
            • 2020-09-25
            • 1970-01-01
            • 2014-12-09
            • 1970-01-01
            • 2021-03-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多