Cara memperbaiki: typeerror: jenis operan yang tidak didukung untuk –: 'str' dan 'int'


Kesalahan yang mungkin Anda temui saat menggunakan Python adalah:

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

Kesalahan ini terjadi ketika Anda mencoba melakukan pengurangan dengan variabel string dan variabel numerik.

Contoh berikut menunjukkan cara mengatasi kesalahan ini dalam praktiknya.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita memiliki panda DataFrame berikut:

 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

Sekarang misalkan kita mencoba mengurangi kolom points_against dari kolom points_for :

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

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

Kita menerima TypeError karena kolom points_for adalah string sedangkan kolom points_against adalah numerik.

Untuk melakukan pengurangan, kedua kolom harus berupa angka.

Bagaimana cara memperbaiki kesalahan tersebut

Untuk mengatasi kesalahan ini, kita dapat menggunakan .astype(int) untuk mengubah kolom points_for menjadi bilangan bulat sebelum melakukan pengurangan:

 #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

Perhatikan bahwa kami tidak menerima kesalahan karena dua kolom yang kami gunakan untuk pengurangan adalah kolom numerik.

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:

Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *