วิธีแก้ไข keyerror ใน pandas (พร้อมตัวอย่าง)


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

 KeyError : 'column_name'

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามเข้าถึงคอลัมน์ของ DataFrame แพนด้าที่ไม่มีอยู่

โดยทั่วไปแล้ว ข้อผิดพลาดนี้จะเกิดขึ้นเมื่อคุณสะกดชื่อคอลัมน์ผิดหรือเว้นวรรคก่อนหรือหลังชื่อคอลัมน์โดยไม่ตั้งใจ

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

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

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

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

points assists rebounds
0 25 5 11
1 12 7 8
2 15 7 10
3 14 9 6
4 19 12 6
5 23 9 5
6 25 9 9
7 29 4 12

ต่อไป สมมติว่าเราพยายามพิมพ์ค่าในคอลัมน์ชื่อ “จุด”:

 #attempt to print values in 'point' column
print (df[' point '])

KeyError Traceback (most recent call last)
/srv/conda/envs/notebook/lib/python3.7/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   3360 try:
-> 3361 return self._engine.get_loc(casted_key)
   3362 except KeyError as err:

/srv/conda/envs/notebook/lib/python3.7/site-packages/pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

/srv/conda/envs/notebook/lib/python3.7/site-packages/pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError : 'dot'

เนื่องจากไม่มีคอลัมน์ “จุด” ใน DataFrame เราจึงได้รับ KeyError

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

วิธีแก้ไขข้อผิดพลาดนี้คือตรวจสอบให้แน่ใจว่าเราสะกดชื่อคอลัมน์ถูกต้อง

หากเราไม่แน่ใจชื่อคอลัมน์ทั้งหมดใน DataFrame เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อพิมพ์ชื่อคอลัมน์แต่ละคอลัมน์:

 #display all column names of DataFrame
print ( df.columns.tolist () )

['points', 'assists', 'rebounds']

เราจะเห็นว่ามีคอลัมน์ชื่อ “points” ดังนั้นเราจึงแก้ไขข้อผิดพลาดได้โดยการสะกดชื่อคอลัมน์ให้ถูกต้อง:

 #print values in 'points' column
print (df[' points '])

0 25
1 12
2 15
3 14
4 19
5 23
6 25
7 29
Name: points, dtype: int64

เราหลีกเลี่ยงข้อผิดพลาดเนื่องจากเราสะกดชื่อคอลัมน์ถูกต้อง

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

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

วิธีแก้ไข: คอลัมน์ซ้อนทับกันแต่ไม่ได้ระบุส่วนต่อท้าย
วิธีแก้ไข: วัตถุ ‘numpy.ndarray’ ไม่มีแอตทริบิวต์ ‘ผนวก’
วิธีแก้ไข: หากใช้ค่าสเกลาร์ทั้งหมด คุณจะต้องผ่านดัชนี

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

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