Search code examples
pythonpandasdataframeconcatenation

Python Dataframe NaN rows slicing, filling and rejoining


I have a big dataframe. Some of the values in a column are NaN. I want to fill them with some value based on the other column value.

Data:

df = 
                             A          B
2019-10-01 09:19:40     667.029710    10
2019-10-01 09:20:15     673.518030    20
2019-10-01 09:21:29     533.137144    30
2020-07-25 15:51:15            NaN    40
2020-07-25 17:20:20            NaN    50
2020-07-25 17:21:23            NaN    60

I want to fill NaN in A column based on the B column value. My code:

sdf = df[df['A'].isnull()] # slice NaN and create a new dataframe
sdf['A'] = sdf['B']*sdf['B']
df = pd.concat([df,sdf])

Everything works fine. I feel my code is lengthy. Is there a one line code?


Solution

  • For fillna we can do

    df.A.fillna(df.B**2, inplace=True)