Qual é a diferença entre combine_first e fillna?

Essas duas funções parecem equivalentes para mim. Você pode ver que eles alcançam o mesmo objetivo no código abaixo, pois as colunas c e d são iguais. Então, quando devo usar um sobre o outro?

Aqui está um exemplo:

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

Devoluções:

     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 é o meu ponto de partida. Agora vou adicionar duas colunas, uma usando combine_first e outra usando fillna, e elas produzirão o mesmo resultado:

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

Devoluções:

     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

Agradecemos a esta pergunta pelo conjunto de dados:Combine os valores da coluna do quadro de dados do Pandas em uma nova coluna

questionAnswers(1)

yourAnswerToTheQuestion