Use a column value if not Null, or another column from a pandas DataFrame

When calculating a new column in a DataFrame, if you want to use the value of column if it is not Null, or fall back on the value of another column, you can do it with a one-liner.

# Import libraries
import pandas as pd
import numpy as np

# Create a sample DataFrame
df = pd.DataFrame(np.random.random(size=(10, 2)), columns=list('AB')).round(3)
df.iloc[[2,3,5,8], 0] = np.nan
df
A B
0 0.591 0.394
1 0.573 0.374
2 NaN 0.309
3 NaN 0.254
4 0.231 0.230
5 NaN 0.099
6 0.392 0.703
7 0.447 0.496
8 NaN 0.058
9 0.597 0.658

Here is the code:

# Create a third column, that will take column A value if not Null, or fall back on B
df['C'] = df['A'].fillna(df['B'])
df
A B C
0 0.591 0.394 0.591
1 0.573 0.374 0.573
2 NaN 0.309 0.309
3 NaN 0.254 0.254
4 0.231 0.230 0.231
5 NaN 0.099 0.099
6 0.392 0.703 0.392
7 0.447 0.496 0.447
8 NaN 0.058 0.058
9 0.597 0.658 0.597

You can even chain it, to get a third column value, if the first two columns are Null:

# Add some data
df['C'] = np.random.random(size=(10, 1)).round(3)
df.iloc[[1,4,5,8], 1] = np.nan

# Create a fourth column, that would take column C value if the first two are Null
df['D'] = df['A'].fillna(df['B']).fillna(df['C'])
df
A B C D
0 0.591 0.394 0.637 0.591
1 0.573 NaN 0.331 0.573
2 NaN 0.309 0.738 0.309
3 NaN 0.254 0.856 0.254
4 0.231 NaN 0.160 0.231
5 NaN NaN 0.926 0.926
6 0.392 0.703 0.847 0.392
7 0.447 0.496 0.824 0.447
8 NaN NaN 0.529 0.529
9 0.597 0.658 0.948 0.597