【问题标题】:Pandas: find most frequent values in columns of listsPandas:在列表的列中查找最常见的值
【发布时间】:2017-04-21 19:49:33
【问题描述】:
    x    animal
0   5    [dog, cat]
1   6    [dog]
2   8    [elephant]

我有这样的数据框。我怎样才能找到所有列列表中包含的最常见的动物。

方法 value_counts() 将列表视为一个元素,我不能使用它。

【问题讨论】:

    标签: pandas


    【解决方案1】:

    也许退后一步重新定义您的数据结构?如果您的数据框是“扁平的”,Pandas 更适合。

    代替:

        x    animal
    0   5    [dog, cat]
    1   6    [dog]
    2   8    [elephant]
    

    做:

        x    animal
    0   5    dog
    1   5    cat
    2   6    dog
    3   8    elephant
    

    现在您可以使用 len(df[df['animal'] == 'dog']) 以及许多其他 Pandas 东西轻松数数!

    要扁平化您的数据框,请参考以下答案: Flatten a column with value of type list while duplicating the other column's value accordingly in Pandas

    【讨论】:

      【解决方案2】:

      类似的东西?

      import pandas as pd
      df = pd.DataFrame({'x' : [5,6,8], 'animal' : [['dog', 'cat'], ['elephant'], ['dog']]})
      x = sum(df.animal, [])
      #x
      #Out[15]: ['dog', 'cat', 'elephant', 'dog']
      
      from collections import Counter
      c = Counter(x)
      c.most_common(1)
      #Out[17]: [('dog', 2)]
      

      【讨论】:

      • 它是否达到目的? @Alex Zaitsev
      猜你喜欢
      • 1970-01-01
      • 2012-08-27
      • 2021-03-07
      • 1970-01-01
      • 2016-11-16
      • 2010-12-03
      相关资源
      最近更新 更多