วิธีแก้ไข: ใช้ได้เฉพาะตัวเข้าถึง .str กับค่าสตริงเท่านั้น


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

 AttributeError : Can only use .str accessor with string values!

ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อคุณพยายามแทนที่รูปแบบในคอลัมน์สตริงของ Pandas DataFrame แต่คอลัมน์ที่คุณใช้งานอยู่ไม่ใช่สตริงจริงๆ

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

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

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [6.5, 7.8, 8.0, 9.0, 7.5, 3.4, 6.6, 6.8],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

	team points assists rebounds
0 A 6.5 5 11
1 A 7.8 7 8
2 A 8.0 7 10
3 A 9.0 9 6
4 B 7.5 12 6
5 B 3.4 9 5
6 B 6.6 9 9
7 B 6.8 4 12

ตอนนี้ สมมติว่าเราพยายามแทนที่ทศนิยมแต่ละตำแหน่งในคอลัมน์ “คะแนน” ด้วยช่องว่าง:

 #attempt to replace decimal in "points" column with a blank
df[' points '] = df[' points ']. str . replace (' . ', '')

AttributeError : Can only use .str accessor with string values! 

เราได้รับข้อผิดพลาดเนื่องจากคอลัมน์ “จุด” ไม่ใช่คอลัมน์สตริง

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

วิธีที่ง่ายที่สุดในการแก้ไขข้อผิดพลาดนี้คือการใช้ฟังก์ชัน .astype(str) ก่อนที่จะพยายามแทนที่ค่าในคอลัมน์ “points”:

 #replace decimal in "points" column with a blank
df[' points '] = df[' points ']. astype (str). str . replace (' . ', '')

#view updated DataFrame
df

	team points assists rebounds
0 A 65 5 11
1 A 78 7 8
2 A 80 7 10
3 A 90 9 6
4 B 75 12 6
5 B 34 9 5
6 B 66 9 9
7 B 68 4 12

โปรดทราบว่าทศนิยมทุกตำแหน่งในคอลัมน์ “จุด” ได้ถูกแทนที่แล้ว และเราไม่ได้รับข้อผิดพลาดใดๆ เนื่องจากเราใช้ฟังก์ชัน .astype(str) ก่อนที่จะพยายามแทนที่ค่าในคอลัมน์ “จุด”

หมายเหตุ : คุณสามารถดูเอกสารฉบับเต็มสำหรับฟังก์ชัน การแทนที่() ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:

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

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

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