PySpark: How to fillna values in dataframe for specific columns?

I have the following sample DataFrame:

a | b | c | 1 | 2 | 4 | 0 | null | null| null | 3 | 4 | 

And I want to replace null values only in the first 2 columns - Column "a" and "b":

a | b | c | 1 | 2 | 4 | 0 | 0 | null| 0 | 3 | 4 | 

Here is the code to create sample dataframe:

rdd = sc.parallelize([(1,2,4), (0,None,None), (None,3,4)]) df2 = sqlContext.createDataFrame(rdd, ["a", "b", "c"]) 

I know how to replace all null values using:

df2 = df2.fillna(0) 

And when I try this, I lose the third column:

df2 = df2.select(df2.columns[0:1]).fillna(0) 
1

2 Answers

df.fillna(0, subset=['a', 'b']) 

There is a parameter named subset to choose the columns unless your spark version is lower than 1.3.1

2

Use a dictionary to fill values of certain columns:

df.fillna( { 'a':0, 'b':0 } ) 
3

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like