【问题标题】:Count frequency of values in pandas DataFrame columnpandas DataFrame 列中值的计数频率
【发布时间】:2016-06-30 12:29:45
【问题描述】:

我想计算每个值在数据框中出现的次数。

这是我的数据框 - df:

    status
1     N
2     N
3     C
4     N
5     S
6     N
7     N
8     S
9     N
10    N
11    N
12    S
13    N
14    C
15    N
16    N
17    N
18    N
19    S
20    N

我想要计数字典:

例如。 counts = {N: 14, C:2, S:4}

我尝试过df['status']['N'],但它提供了keyErrordf['status'].value_counts,但没有用。

【问题讨论】:

    标签: python django pandas dataframe


    【解决方案1】:

    你能把df转换成一个列表吗?

    如果是这样:

    a = ['a', 'a', 'a', 'b', 'b', 'c']
    c = dict()
    for i in set(a):
        c[i] = a.count(i)
    

    使用字典理解:

    c = {i: a.count(i) for i in set(a)}
    

    【讨论】:

      【解决方案2】:

      您可以使用value_countsto_dict

      print df['status'].value_counts()
      N    14
      S     4
      C     2
      Name: status, dtype: int64
      
      counts = df['status'].value_counts().to_dict()
      print counts
      {'S': 4, 'C': 2, 'N': 14}
      

      【讨论】:

      • 不错的解决方案 - 仅使用 pandas
      【解决方案3】:

      另一种使用失败者Counter的班轮:

      In [3]: from collections import Counter
      
      In [4]: dict(Counter(df.status))
      Out[4]: {'C': 2, 'N': 14, 'S': 4}
      

      【讨论】:

        【解决方案4】:

        你可以试试这个方法。

        df.stack().value_counts().to_dict()
        

        【讨论】:

        • 我们为什么要堆叠?
        【解决方案5】:

        查看我在此线程中对 Pandas DataFrame 输出的回复,

        count the frequency that a value occurs in a dataframe column

        对于字典输出,可以修改如下:

        def column_list_dict(x):
            column_list_df = []
            for col_name in x.columns:        
                y = col_name, len(x[col_name].unique())
                column_list_df.append(y)
            return dict(column_list_df)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-14
          • 2021-09-02
          • 1970-01-01
          • 2014-12-16
          • 2017-08-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多