修正方法: typeerror: – のオペランド タイプがサポートされていません: 'str' および 'int'


Python の使用時に発生する可能性のあるエラーは次のとおりです。

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

このエラーは、文字列変数と数値変数を使用して減算を実行しようとすると発生します。

次の例は、このエラーを実際に解決する方法を示しています。

エラーを再現する方法

次のパンダ データフレームがあるとします。

 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列は数値であるため、 TypeErrorが返されます。

減算を実行するには、両方の列が数値である必要があります。

エラーを修正する方法

このエラーを解決するには、減算を実行する前に.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

減算に使用した 2 つの列は数値列であるため、エラーは発生しないことに注意してください。

追加リソース

次のチュートリアルでは、Python の他の一般的なエラーを修正する方法を説明します。

パンダの KeyError を修正する方法
修正方法: ValueError: float NaN を int に変換できません
修正方法: ValueError: オペランドをシェイプでブロードキャストできませんでした

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です