วิธีแก้ไข: typeerror: ประเภทตัวถูกดำเนินการที่ไม่รองรับสำหรับ –: 'str' และ 'int'


ข้อผิดพลาดที่คุณอาจพบเมื่อใช้ Python คือ:

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

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามลบด้วยตัวแปรสตริงและตัวแปรตัวเลข

ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามี 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

ตอนนี้ สมมติว่าเราพยายามลบคอลัมน์ point_against ออกจากคอลัมน์ point_for :

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

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

เราได้รับ TypeError เนื่องจากคอลัมน์ point_for เป็นสตริง ในขณะที่คอลัมน์ point_against เป็นตัวเลข

หากต้องการลบทั้งสองคอลัมน์ต้องเป็นตัวเลข

วิธีการแก้ไขข้อผิดพลาด

เพื่อแก้ไขข้อผิดพลาดนี้ เราสามารถใช้ .astype(int) เพื่อแปลงคอลัมน์ point_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:

วิธีแก้ไข KeyError ใน Pandas
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int
วิธีแก้ไข: ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *