【问题标题】:Pandas: how to get only values of columns that value_counts() equals NPandas:如何仅获取 value_counts() 等于 N 的列的值
【发布时间】:2022-10-14 18:09:51
【问题描述】:

我有一个数据框:

df = 
    a   b   c   d   e
0   0   1   2   3   4
1   1   2   3   0   4
2   2   3   1   4   0

我想获得在某一列中出现 N 次的值。

例如,如果我想获得在“e”列中出现 2 次的所有值,我会得到result = [4],如果我想获得在“d”列中出现 1 次的所有值,我会获取result = [3,0,4]

我可以做df['e'].value_counts() == 2,但这给出了一个真/假系列。我只想获得“真”中的值。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以在Series.value_counts 之后过滤@​​987654322@ 值:

    s = df['e'].value_counts()
    
    L = s.index[s.eq(2)].tolist()
    print (L)
    [4]
    

    s = df['d'].value_counts()
    
    L = s.index[s.eq(1)].tolist()
    print (L)
    [0, 4, 3]
    

    【讨论】:

      【解决方案2】:

      您所做的会返回 True/False 系列,因此我们需要使用它来获取索引值!

      col = 'd'
      n = 1
      df[col].value_counts() == n
      # 3    True
      # 0    True
      # 4    True
      # Name: d, dtype: bool
      

      要获取后面有True 的索引,我们可以这样做:

      df[col].value_counts().index[df[col].value_counts() == n]
      # Int64Index([3, 0, 4], dtype='int64')
      

      要创建一个列表,我们只需要使用list()

      list(df[col].value_counts().index[df[col].value_counts() == n])
      # [3, 0, 4]
      

      【讨论】:

        猜你喜欢
        • 2022-12-05
        • 1970-01-01
        • 2014-06-05
        • 2017-03-09
        • 2022-01-01
        • 2016-06-02
        • 2016-03-12
        • 1970-01-01
        相关资源
        最近更新 更多