¿Cuál es la diferencia entre combine_first y fillna?

Estas dos funciones me parecen equivalentes. Puede ver que logran el mismo objetivo en el código a continuación, ya que las columnas cyd son iguales. Entonces, ¿cuándo debo usar uno sobre el otro?

Aquí hay un ejemplo:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0, 10, size=(10, 2)), columns=list('ab'))
df.loc[::2, 'a'] = np.nan

Devoluciones:

     a  b
0  NaN  4
1  2.0  6
2  NaN  8
3  0.0  4
4  NaN  4
5  0.0  8
6  NaN  7
7  2.0  2
8  NaN  9
9  7.0  2

Este es mi punto de partida. Ahora agregaré dos columnas, una con combine_first y otra con fillna, y producirán el mismo resultado:

df['c'] = df.a.combine_first(df.b)
df['d'] = df['a'].fillna(df['b'])

Devoluciones:

     a  b    c    d
0  NaN  4  4.0  4.0
1  8.0  7  8.0  8.0
2  NaN  2  2.0  2.0
3  3.0  0  3.0  3.0
4  NaN  0  0.0  0.0
5  2.0  4  2.0  2.0
6  NaN  0  0.0  0.0
7  2.0  6  2.0  2.0
8  NaN  4  4.0  4.0
9  4.0  6  4.0  4.0

Crédito a esta pregunta para el conjunto de datos:Combine los valores de columna del marco de datos de Pandas en una nueva columna

Respuestas a la pregunta(1)

Su respuesta a la pregunta