Olá Martin,
De função direta do pandas a mais próxima que eu conheço é a fillna
com a média também que o Victor já explicou.
A solução então deve ser algo mais específico/manual como o Victor também falou, mas provavelmente pode ser feita com o pandas sem mais bibliotecas externas, dependendo muito dos dados que você tem e da fórmula e suas dependências que deve ser aplicada.
Segue um exemplo genérico que você pode tentar adaptar para o seu cenário:
# Exemplo simples com a função: y = -x² + 5x
import pandas as pd
import numpy as np
# Montagem dos dados iniciais
df = pd.DataFrame({
'X': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'Y': [0, 4, np.nan, 6, np.nan, 0, np.nan, np.nan, -24, np.nan, -50]
})
# Função que aplica a fórmula definida
def funcao(x):
# y = -x² + 5x
return -(x ** 2) + (5 * x)
# Função a ser aplicada em cada linha do DataFrame para aplicar a fórmula caso necessário
def preenche(row):
return funcao(row['X']) if pd.isnull(row['Y']) else row['Y']
df['Y'] = df.apply(preenche, axis=1)
Esse é um exemplo bem específico onde a gente tem uma coluna com o valor base, o código final vai depender muito do que você já tem de início.