【问题标题】:Extract values in Pandas value_counts()在 Pandas value_counts() 中提取值
【发布时间】:2016-06-02 02:35:46
【问题描述】:

假设我们使用了 pandas dataframe[column].value_counts() 输出:

 apple   5 
 sausage 2
 banana  2
 cheese  1

如何按照上面显示的从最大值到最小值的顺序提取值?

例如:[apple,sausage,banana,cheese]

【问题讨论】:

  • 您能提供一个MCVE吗?您使用的是dataframe.value_counts() 还是series.value_counts()?你有什么数据类型的输出?
  • 请注意,value_counts() 的输出是一个系列,因此可以使用任何系列方法,但通常您只需将其保存为原样,这取决于您以后要使用它做什么。

标签: python pandas dataframe series


【解决方案1】:

提取值的最佳方法是执行以下操作

json.loads(dataframe[column].value_counts().to_json())

这将返回一个字典,您可以像使用任何其他字典一样使用它。使用值或键。

 {"apple": 5, "sausage": 2, "banana": 2, "cheese": 1}

【讨论】:

  • sorted(dict, key=lambda key: -dict[key])
【解决方案2】:

如果有人在 cmets 中错过了,试试这个:

dataframe[column].value_counts().to_frame()

【讨论】:

    【解决方案3】:
    #!/usr/bin/env python
    
    import pandas as pd
    
    # Make example dataframe
    df = pd.DataFrame([(1, 'Germany'),
                       (2, 'France'),
                       (3, 'Indonesia'),
                       (4, 'France'),
                       (5, 'France'),
                       (6, 'Germany'),
                       (7, 'UK'),
                       ],
                      columns=['groupid', 'country'],
                      index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
    
    # What you're looking for
    values = df['country'].value_counts().keys().tolist()
    counts = df['country'].value_counts().tolist()
    

    现在,print(df['country'].value_counts()) 给出:

    France       3
    Germany      2
    UK           1
    Indonesia    1
    

    print(values) 给出:

    ['France', 'Germany', 'UK', 'Indonesia']
    

    print(counts) 给出:

    [3, 2, 1, 1]
    

    【讨论】:

      【解决方案4】:

      首先,如果尚未按这种方式排序,则必须先将 dataframe countmax min min min。在您的帖子中,它的顺序已经正确,但无论如何我都会sort

      dataframe.sort_index(by='count', ascending=[False])
          col     count
      0   apple   5
      1   sausage 2
      2   banana  2
      3   cheese  1 
      

      然后你可以将col列输出到一个列表中:

      dataframe['col'].tolist()
      ['apple', 'sausage', 'banana', 'cheese']
      

      【讨论】:

        【解决方案5】:

        试试这个:

        dataframe[column].value_counts().index.tolist()
        ['apple', 'sausage', 'banana', 'cheese']
        

        【讨论】:

        • 太棒了!另一方面,当您打印 dataframe[column].value_counts() 时,您会在底部获得一个 dtype。有没有办法不得到那个?
        • 试试:dataframe[column].value_counts().to_frame()
        • 一个选项.value_counts().index.value_counts().values
        猜你喜欢
        • 2022-12-05
        • 1970-01-01
        • 2022-12-02
        • 1970-01-01
        • 2021-03-15
        • 2022-10-14
        • 2016-09-11
        • 2013-07-16
        相关资源
        最近更新 更多