Como corrigir: typeerror: tipos de operandos não suportados para –: 'str' e 'int'
Um erro que você pode encontrar ao usar Python é:
TypeError : unsupported operand type(s) for -: 'str' and 'int'
Este erro ocorre quando você tenta realizar a subtração com uma variável de string e uma variável numérica.
O exemplo a seguir mostra como resolver esse erro na prática.
Como reproduzir o erro
Suponha que temos o seguinte DataFrame do pandas:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
' points_for ': ['18', '22', '19', '14', '14', '11', '20', '28'],
' points_against ': [5, 7, 17, 22, 12, 9, 9, 4]})
#view DataFrame
print (df)
team points_for points_against
0 to 18 5
1 B 22 7
2 C 19 17
3 D 14 22
4 E 14 12
5 F 11 9
6 G 20 9
7:28 a.m. 4
#view data type of each column
print ( df.dtypes )
team object
points_for object
points_against int64
dtype:object
Agora suponha que tentamos subtrair a coluna points_against da coluna points_for :
#attempt to perform subtraction
df[' diff '] = df. points_for - df. points_against
TypeError : unsupported operand type(s) for -: 'str' and 'int'
Recebemos um TypeError porque a coluna points_for é uma string enquanto a coluna points_against é numérica.
Para realizar uma subtração, ambas as colunas devem ser numéricas.
Como corrigir o erro
Para resolver esse erro, podemos usar .astype(int) para converter a coluna points_for em um número inteiro antes de realizar a subtração:
#convert points_for column to integer
df[' points_for '] = df[' points_for ']. astype (int)
#perform subtraction
df[' diff '] = df. points_for - df. points_against
#view updated DataFrame
print (df)
team points_for points_against diff
0 A 18 5 13
1 B 22 7 15
2 C 19 17 2
3 D 14 22 -8
4 E 14 12 2
5 F 11 9 2
6 G 20 9 11
7:28 4 24
#view data type of each column
print ( df.dtypes )
team object
points_for int32
points_against int64
diff int64
dtype:object
Observe que não estamos recebendo um erro porque as duas colunas que usamos para subtração são colunas numéricas.
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas