1
resposta

Mediana Par

Olá

Se executo: "notas_beltrano.loc[elemento_md - 1] + notas_beltrano.loc[elemento_md]", chego em 12,5 (sem erro) contudo, se divido por 2 ("(notas_beltrano.loc[elemento_md - 1] + notas_beltrano.loc[elemento_md]) / 2"), retorna um erro (TypeError: unsupported operand type(s) for /: 'str' and 'int').

O resultado deveria ser um float (6,25)

onde errei?

1 resposta

Olá, Daniel! Tudo bom?

Quando selecionamos notas_beltrano.loc[elemento_md - 1] por exemplo, estamos extraindo uma linha inteira de um dataframe no pandas.Podemos visualizar isso com um print().

print(notas_beltrano.loc[elemento_md - 1])

Output:

Captura de tela, que mostra a saída do código  print(notas_beltrano.loc[elemento_md - 1]) com os valores da coluna index uma string chamada Física, coluna Beltrano com  valor  float 9.5,  dtype: object

Perceba que não é só o valor da nota de Física de da coluna 'Beltrano' (9,5),mas a nota e a coluna index também.

Por isso fazendo esta soma que foi executada.

result = ((notas_beltrano.loc[elemento_md - 1] + notas_beltrano.loc[elemento_md]))
print(result)

Teríamos esta saída:

Captura de tela, que mostra a saída do print(result) com os valores da coluna index uma string chamada HistóriaFísica, coluna Beltrano com o valor float 12.5, dtype: object

O python não só somou o valor da nota, mas também concatenou a string História e Física. Por isso a soma não retornou erro algum já que concatenar a string é totalmente possível, mas por outro lado fazer a divisão de uma string não é, então ao tentar dividir este resultado, nos deparamos com o erro que você mencionou.

Para solucionar isso, você poderá selecionar somente a coluna com os valores que deseja fazer a operação. Desta forma:

resultado = ((notas_beltrano.loc[elemento_md - 1][1] + notas_beltrano.loc[elemento_md][1])) // A coluna 0 é nossa coluna index com os nomes das matérias, já a coluna 1 sãos as notas de beltrano.
print(resultado)

Output:

12.5

E se tentarmos fazer a divisão agora teríamos o resultado desejado.

result = ((notas_beltrano.loc[elemento_md - 1][1] + notas_beltrano.loc[elemento_md][1]))
print(result/2)

Output:

6.25

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!