I have a dataframe like as shown below
df = pd.DataFrame({'person_id': [101,101,101,101], 'sourcename':['test1','test2','test3','test4'], 'Test':[np.nan,np.nan,'B5','B6']})
What I would like to do is copy non-na
rows from Test
column and paste it in corresponding row under sourcename
column
When I tried the below, it makes the other rows of sourcename
column as NA
df['sourcename'] = df.loc[df['Test'].notna()]['Test']
I expect my output to be like as shown below
Advertisement
Answer
One idea with Series.fillna
:
df['sourcename'] = df['Test'].fillna(df['sourcename'])
Solution with check non missing values:
You are close, assign to rows filtered by mask:
df.loc[df['Test'].notna(), 'sourcename'] = df['Test']
Or:
df['sourcename'] = np.where(df['Test'].notna(), df['Test'], df['sourcename'])