qual é a maneira mais rápida / simples de eliminar os valores nan e inf / -inf de um DataFrame do pandas sem redefinir mode.use_inf_as_null
? Eu gostaria de poder usar os argumentos subset
e , exceto com valores considerados ausentes, como:how
dropna
inf
df.dropna(subset=["col1", "col2"], how="all", with_inf=True)
Isso é possível? Existe uma maneira de dizer dropna
para incluir inf
em sua definição de valores ausentes?
inf
valores por valores predefinidosint
, como0
em uma determinada coluna?.replace(..., 0)
. Apenas para fazer em colunas de atualizar essas colunas ou sejadf[cols] = df[cols].replace(..., 0)
replace
não funciona no local, para que um novoDataFrame
seja retornadoCom o contexto da opção, isso é possível sem definir permanentemente
use_inf_as_na
. Por exemplo:Claro que pode ser configurado para tratar
inf
comoNaN
permanentemente comPara versões mais antigas, substitua
use_inf_as_na
poruse_inf_as_null
.fonte
use_inf_as_null
foi descontinuado e será removido em uma versão futura. Use emuse_inf_as_na
vez disso. Adicionar / atualizar resposta?inf
como nulos nos níveis de configuração global em vez de no nível operacional. Isso pode potencialmente economizar tempo imputando os valores primeiro.Aqui está outro método usado
.loc
para substituir inf por nan em uma série:Então, em resposta à pergunta original:
fonte
Use (rápido e simples):
Essa resposta é baseada na resposta da DougR em outra pergunta. Aqui está um código de exemplo:
Resultado:
fonte
Outra solução seria usar o
isin
método. Use-o para determinar se cada valor é infinito ou ausente e, em seguida, encadeie oall
método para determinar se todos os valores nas linhas são infinitos ou ausentes.Por fim, use a negação desse resultado para selecionar as linhas que não possuem todos os valores infinitos ou ausentes por meio de indexação booleana.
fonte
A solução acima modificará os
inf
s que não estão nas colunas de destino. Para remediar isso,fonte
{v: lst for v in cols}
Você pode usar
pd.DataFrame.mask
comnp.isinf
. Você deve garantir primeiro que sua série de quadros de dados seja do tipofloat
. Em seguida, usedropna
com sua lógica existente.fonte