如何修复:类型错误:不支持的操作数类型 –:“str”和“int”


使用Python时可能会遇到的错误是:

 TypeError : unsupported operand type(s) for -: 'str' and 'int'

当您尝试使用字符串变量和数值变量执行减法时,会出现此错误。

以下示例展示了如何在实践中解决此错误。

如何重现错误

假设我们有以下 pandas DataFrame:

 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

现在假设我们尝试从points_for列中减去points_against列:

 #attempt to perform subtraction
df[' diff '] = df. points_for - df. points_against

TypeError : unsupported operand type(s) for -: 'str' and 'int'

我们收到类型错误,因为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: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 中的其他常见错误:

如何修复 Pandas 中的 KeyError
如何修复:ValueError:无法将 float NaN 转换为 int
如何修复:ValueError:操作数无法与形状一起广播

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注