1
resposta

Por que está dando erro somente no "A" : df1[df1 > 0] = "A"

df1[df1 > 0] = "A"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-75-116c98842f2b> in <module>
----> 1 df1[df1 > 0] = "A"

TypeError: '>' not supported between instances of 'tuple' and 'int'
df2[df2 > 0] = "B"
df2

Coluna0    Coluna1    Coluna2
Linha0    B    B    B
Linha1    B    B    B
Linha2    B    B    B
1 resposta

Olá, Carlos! Tudo bom?

Na operação

df1[df1 > 0] = "A"

Nós estamos fazendo uma alteração no nosso pd.DataFrame, fazendo que todos os números positivos virem o caractere A. E depois que rodamos essa linha de código, temos a seguinte mudança:

O df1 que era:

012
Linha0123
Linha1456
Linha2789

Passa a ser:

012
Linha0AAA
Linha1AAA
Linha2AAA

Agora se nós tentarmos rodar a mesma célula novamente com o comando df[df > 0], esse comando é inválido, pois o teste lógico não funciona para os caracteres "A". Não temos como saber qual caractere é maior que 0, por isso é retornado o erro acima.

Para resolver, basta executar as linhas de código anteriores onde fazemos a definição de df1 e df2, então precisamos executar antes em sequência os comandos:

import pandas as pd

data = [[1, 2, 3], 
        [4, 5, 6], 
        [7, 8, 9]]

df1 = pd.DataFrame(data = data)

index = ['Linha' + str(i) for i in range(3)]
columns = ['Coluna' + str(i) for i in range(3)]

df2 = pd.DataFrame(data = data, index = index, columns = columns)

Agora podemos novamente fazer a manipulação.

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!