Search code examples
pythonpandasfillna

How to fill missing value in a few columns at the same time


I need to drop missing values in a few columns. I wrote this to do it one by one:

df2['A'].fillna(df1['A'].mean(), inplace=True)
df2['B'].fillna(df1['B'].mean(), inplace=True)
df2['C'].fillna(df1['C'].mean(), inplace=True)

Any other ways I can fill them all in one line of code?


Solution

  • You can use a single instructions:

    cols = ['A', 'B', 'C']
    df[cols] = df[cols].fillna(df[cols].mean())
    

    Or for apply on all numeric columns, use select_dtypes:

    cols = df.select_dtypes('number').columns
    df[cols] = df[cols].fillna(df[cols].mean())
    

    Note: I strongly discourage you to use inplace parameter. It will probably disappear in Pandas 2