NoteRun

AttributeError: 'DataFrame' object has no attribute 'ix'

Erro de Python · pandas 1.0 e posteriores

O notebook foi escrito para um pandas antigo. O .ix foi removido no pandas 1.0 (janeiro de 2020), então toda linha que o usa para com este erro. Uma Series dá o mesmo erro: 'Series' object has no attribute 'ix'.

Por que acontece

O .ix misturava duas formas de selecionar: por rótulo e, quando o índice não era de inteiros, por posição. O pandas as separou em .loc (rótulos) e .iloc (posições), marcou o .ix como obsoleto na versão 0.20 e o removeu na 1.0. Notebooks de cursos e tutoriais escritos antes de 2020 ainda o usam.

Como corrigir

A maioria das linhas com .ix seleciona por rótulos de linha e coluna; para elas, escreva .loc:

Antes

df = pd.read_csv("sales.csv")
city = df.ix[0, "city"]

Depois

df = pd.read_csv("sales.csv")
city = df.loc[0, "city"]

Se o índice não for de inteiros e a linha selecionar por posição (por exemplo, df.ix[:5] numa tabela indexada por datas), escreva .iloc: df.iloc[:5].

No NoteRun

O NoteRun verifica o notebook antes de você executá-lo. A célula com .ix aparece como “Esta célula pode não funcionar”, com a correção ali mesmo: toque em Corrigir, ou em Corrigir tudo para o notebook inteiro. Nada muda até você tocar, você vê cada mudança antes, e Desfazer traz o notebook de volta. Quando uma linha pode estar selecionando por posição, o NoteRun avisa para você conferir.

No iPhone ou iPad, baixe um notebook de exemplo com este erro e abra no NoteRun.

Baixar na App Store

Outros erros