วิธีแก้ไข: ใช้ได้เฉพาะตัวเข้าถึง .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: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้