Erich
Erich

Reputation: 949

count occurrences of number by column in pandas data frame

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 

Upvotes: 12

Views: 20613

Answers (2)

Daniel
Daniel

Reputation: 27559

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.

Upvotes: 22

Bob Haffner
Bob Haffner

Reputation: 8483

This should do the trick

df1[df1 == 1].count()

Upvotes: 4

Related Questions