Baron Yugovich
Baron Yugovich

Reputation: 4307

Pandas DataFrame - count 0s in every row

I have dataframe that looks like this

x = pd.DataFrame.from_dict({'A':[1,2,0,4,0,6], 'B':[0, 0, 0, 44, 48, 81], 'C':[1,0,1,0,1,0]})

(assume it might have other columns). I want to add a column, which specifies for each row, how many 0s there are in the specific columns A,B,C.

   A   B  C  num_zeros
0  1   0  1    1
1  2   0  0    2
2  0   0  1    2
3  4  44  0    1
4  0  48  1    1
5  6  81  0    1

Upvotes: 2

Views: 35

Answers (1)

Scott Boston
Scott Boston

Reputation: 153460

Create a boolean dtype dataframe using ==, then use sum with axis=1:

x['num_zeros'] = (x == 0).sum(1)

Output:

   A   B  C  num_zeros
0  1   0  1          1
1  2   0  0          2
2  0   0  1          2
3  4  44  0          1
4  0  48  1          1
5  6  81  0          1

Now, if you want explicitly define which columns, ie... on count in B and C columns, then you can use this:

x['Num_zeros_in_BC'] = (x == 0)[['B','C']].sum(1)

Output:

   A   B  C  num_zeros  Num_zeros_in_BC
0  1   0  1          1                1
1  2   0  0          2                2
2  0   0  1          2                1
3  4  44  0          1                1
4  0  48  1          1                0
5  6  81  0          1                1

Upvotes: 4

Related Questions