【问题标题】:Count or Sum using Pandas Dataframe with number of columns使用具有列数的 Pandas Dataframe 进行计数或求和
【发布时间】:2016-11-28 20:03:02
【问题描述】:

我试图找到一种方法来计算数据帧的行数。

这是我的 df

 index col1  col2 col3 col4 col5 col6 col7 col8
  0     1     0    2    3     1    0   0    0
  1     0     0    0    1     2    0   2    0
  2     3     0    0    0     1    0   0    1
  3     1     0    0    0     1    1   1    0
  4     1     0    2    3     1    0   0    0
  5     3     0    0    0     1    0   0    1

在这里我想附加另一行来计算我的列数,如下所示

index col1  col2 col3 col4 col5 col6 col7 col8
  0     1     0    2    3     1    0   0    0
  1     0     0    0    1     2    0   2    0
  2     3     0    0    0     1    0   0    1
  3     1     0    0    0     1    1   1    0
  4     1     0    2    3     1    0   0    0
  5     3     0    0    0     1    0   0    1
-----------------------------------------------
Total   5     0    2    3     6    1   2    2

【问题讨论】:

    标签: python-3.x pandas dataframe


    【解决方案1】:

    您可以使用通过与0 比较创建的boolean mask 中的sum。输出由loc 分配给DataFrame 的最后一行:

    print (df != 0)
            col1   col2   col3   col4  col5   col6   col7   col8
    index                                                       
    0       True  False   True   True  True  False  False  False
    1      False  False  False   True  True  False   True  False
    2       True  False  False  False  True  False  False   True
    3       True  False  False  False  True   True   True  False
    4       True  False   True   True  True  False  False  False
    5       True  False  False  False  True  False  False   True
    
    df.loc['total'] = (df != 0).sum()
    print (df)
           col1  col2  col3  col4  col5  col6  col7  col8
    index                                                
    0         1     0     2     3     1     0     0     0
    1         0     0     0     1     2     0     2     0
    2         3     0     0     0     1     0     0     1
    3         1     0     0     0     1     1     1     0
    4         1     0     2     3     1     0     0     0
    5         3     0     0     0     1     0     0     1
    total     5     0     2     3     6     1     2     2
    

    DataFrame.ne类似的解决方案:

    df.loc['total'] = df.ne(0).sum()
    print (df)
           col1  col2  col3  col4  col5  col6  col7  col8
    index                                                
    0         1     0     2     3     1     0     0     0
    1         0     0     0     1     2     0     2     0
    2         3     0     0     0     1     0     0     1
    3         1     0     0     0     1     1     1     0
    4         1     0     2     3     1     0     0     0
    5         3     0     0     0     1     0     0     1
    total     5     0     2     3     6     1     2     2
    

    【讨论】:

      猜你喜欢
      • 2021-05-24
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 2017-09-22
      • 2015-09-17
      • 1970-01-01
      • 2016-11-26
      相关资源
      最近更新 更多