Olá Vinicius! Tudo ok contigo?
Na sua primeira tentativa, o problema foi que você estava tentando somar os pontos extras de todos os alunos para cada linha, o que não é o resultado desejado. Isso ocorre porque a variável dados['pontos_extras']
não é filtrada de acordo com o aluno atual no lambda. Portanto, o cálculo acaba sendo aplicado a todos os alunos, somando todos os pontos extras.
Sua segunda tentativa foi uma abordagem onde você multiplica as notas por 1.4 caso elas sejam menores ou iguais a 6 e atribui 10 às notas maiores do que 6. Parece que essa abordagem atingiu o resultado esperado.
Quanto à sua pergunta sobre como passar outro parâmetro ou coluna dentro do lambda, a resposta é sim. Você pode usar a função apply
para aplicar uma função personalizada que leva mais de um argumento. No entanto, a maneira como você passa esses argumentos deve ser cuidadosamente considerada.
No seu caso, se você quiser aplicar uma operação que envolve duas colunas, como a soma das notas e dos pontos extras, é melhor usar a função apply
em conjunto com a função lambda
. Aqui está como você pode fazer isso:
dados['notas_finais'] = dados.apply(lambda row: row['Notas'] + row['pontos_extras'] if row['Notas'] <= 6 else 10, axis=1)
Observe que usei axis=1
no final da chamada da função apply
. Isso garante que a função lambda seja aplicada linha a linha, e você pode acessar os valores das colunas usando row['NomeDaColuna']
.
No entanto, dado que você já encontrou uma solução que parece funcionar bem, não há necessidade urgente de adotar essa abordagem alternativa. Sua segunda tentativa, multiplicando por 1.4 e definindo o limite em 10, parece ser uma solução eficaz para o problema.
Se você tiver mais perguntas ou precisar de mais assistência, fique à vontade para perguntar.
Abraços e bons estudos!