Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I fill NA values in multiple columns in pandas?

I have a dataframe with 50 columns. I want to replace NAs with 0 in 10 columns.

What's the simplest, most readable way of doing this?

I was hoping for something like:

cols = ['a', 'b', 'c', 'd']
df[cols].fillna(0, inplace=True)

But that gives me ValueError: Must pass DataFrame with boolean values only.

I found this answer, but it's rather hard to understand.

like image 630
Richard Avatar asked Apr 11 '16 18:04

Richard


1 Answers

you can use update():

In [145]: df
Out[145]:
    a   b   c  d  e
0 NaN NaN NaN  3  8
1 NaN NaN NaN  8  7
2 NaN NaN NaN  2  8
3 NaN NaN NaN  7  4
4 NaN NaN NaN  4  9
5 NaN NaN NaN  1  9
6 NaN NaN NaN  7  7
7 NaN NaN NaN  6  5
8 NaN NaN NaN  0  0
9 NaN NaN NaN  9  5

In [146]: df.update(df[['a','b','c']].fillna(0))

In [147]: df
Out[147]:
     a    b    c  d  e
0  0.0  0.0  0.0  3  8
1  0.0  0.0  0.0  8  7
2  0.0  0.0  0.0  2  8
3  0.0  0.0  0.0  7  4
4  0.0  0.0  0.0  4  9
5  0.0  0.0  0.0  1  9
6  0.0  0.0  0.0  7  7
7  0.0  0.0  0.0  6  5
8  0.0  0.0  0.0  0  0
9  0.0  0.0  0.0  9  5
like image 160
MaxU - stop WAR against UA Avatar answered Oct 21 '22 05:10

MaxU - stop WAR against UA