Одна ошибка, с которой вы можете столкнуться при использовании Python:
TypeError : unsupported operand type(s) for -: 'str' and 'int'
Эта ошибка возникает при попытке выполнить вычитание со строковой переменной и числовой переменной.
В следующем примере показано, как устранить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
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 A 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 H 28 4
#view data type of each column
print(df.dtypes )
team object
points_for object
points_against int64
dtype: object
Теперь предположим, что мы пытаемся вычесть столбец points_against из столбца points_for :
#attempt to perform subtraction
df['diff'] = df.points_for - df.points_against
TypeError : unsupported operand type(s) for -: 'str' and 'int'
Мы получаем TypeError , потому что столбец points_for является строкой, а столбец points_against — числовым.
Для выполнения вычитания оба столбца должны быть числовыми.
Как исправить ошибку
Чтобы устранить эту ошибку, мы можем использовать .astype(int) для преобразования столбца points_for в целое число перед выполнением вычитания:
#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 H 28 4 24
#view data type of each column
print(df.dtypes )
team object
points_for int32
points_against int64
diff int64
dtype: object
Обратите внимание, что мы не получаем ошибку, потому что оба столбца, которые мы использовали для вычитания, являются числовыми столбцами.
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами