12

I have a pandas data frame I want to count how often a number appears in a column for each column

     a   b   c   d   e
0    2   3   1   5   4
1    1   3   2   5   4
2    1   3   2   5   4
3    2   4   1   5   3
4    2   4   1   5   3

This is my code that does not work

def equalsOne(x):
    x[x.columns == 1].sum()

df1.apply(equalOne(), axis = 1)

Here is the desired output

a 2
b 0
c 3
d 0
e 0 
Erich
  • 899
  • 2
  • 10
  • 26

2 Answers2

22

You can do:

(df==1).sum()

df==1 gives:

       a      b      c      d      e
0  False  False   True  False  False
1   True  False  False  False  False
2   True  False  False  False  False
3  False  False   True  False  False
4  False  False   True  False  False

and the sum() treats False as 0 and True as 1.

Daniel
  • 26,899
  • 12
  • 60
  • 88
4

This should do the trick

df1[df1 == 1].count()
Bob Haffner
  • 8,235
  • 1
  • 36
  • 43