You can use bfill
followed by fillna()
.
df['Home_Zip'] = df.iloc[:, 2:].bfill(1).fillna('Unknown')['Home_Zip']
Or chain several fillna
:
df['Home_Zip'] = (df['Home_Zip'].fillna(df['work_zip']) .fillna(df['Family_zip']) .fillna('Unknown') )
Output:
s/n Name Home_Zip work_zip Family_zip0 1 John 56729 NaN 836AB1 2 sawn 73836 NaN 738362 3 Michael 839CD 839CD 830933 4 Nathan 93932 78393 N/a4 5 Jack Unknown NaN NaN