Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao executar o for

Ao executar o código da aula tenho o retorno do seguinte erro:

Código:

todas_matriculas = []
x = np.random.rand(20)
prob = x / sum(x)

for index, row in nomes.iterrows():
    id = row.id_aluno
    matriculas = row.matriculas
    for i in range(matriculas):
        mat = [ids, np.random.choice(cursos.index, p = prob)]
        todas_matriculas.append(mat)

matriculas = pd.DataFrame(todas_matriculas, columns = ['id_aluno', 'id_curso'])
matriculas.head()

Erro:

'---------------------------------------------------------------------------'

AttributeError                            Traceback (most recent call last)
<ipython-input-32-48999e002a0a> in <module>()

  1 for index, row in nomes.iterrows():
    ----> 2     id = row.id_aluno
  3     matriculas = row.matriculas
  4     for i in range(matriculas):
  5         mat = [ids, np.random.choice(cursos.index, p = prob)]


/usr/local/lib/python3.7/dist-packages/pandas/core/generic.py in __getattr__(self, name)
   5485         ):
   5486             return self[name]
-> 5487         return object.__getattribute__(self, name)
   5488 
   5489     def __setattr__(self, name: str, value) -> None:

AttributeError: 'Series' object has no attribute 'id_aluno'

Obs.: Executei no Jupyter e também no Colab.

1 resposta
solução!

Olá, Mayson! Como vai?

Acredito que o problema esteja na linha mat = [ids, np.random.choice(cursos.index, p = prob)].

Observa-se que você definiu o id do aluno em id = row.id_aluno através da variável id e quando foi relacionar os ids dos alunos com seus respectivos cursos, você utilizou a variável ids (com um s).

Peguei o seu código e só fiz essa alteração e rodou normalmente.

Espero que ajude!