หากเราพยายาม index Series หรือ DataFrame ด้วย .loc[] โดยใช้ missing labels หรือ labels ที่ไม่มีอยู่จริงใน Series และ DataFrame นั้น ระบบจะขึ้น KeyError

เราแก้ปัญหานี้ได้โดยการใช้ .reindex() ฟังก์ชั่นแทน

.reindex()

.reindex() ฟังก์ชั่นจะเปลี่ยน labels ของแถวและคอลัมน์ใน DataFrame หรือ Series หลังจากนั้นข้อมูลที่ได้จะมี labels ตรงกับ labels ที่เราระบุบนแกนนั้น

ฟังก์ชั่นนี้จะแสดง ValueError หากใน Series นั้นมี labels ซ้ำกัน

ตัวอย่าง

import pandas as pd

s = pd.Series([1,2,3,4],index=['a', 'b', 'c','d'])
print(s.reindex(['a','b','x']))

output:
a    1.0
b    2.0
x    NaN
dtype: float64

จะเห็นได้ว่า Series ชื่อ s มีข้อมูลทั้งหมด 4 ตัว โดยเราให้ labels ข้อมูลแต่ละตัวเป็น ‘a’, ‘b’, ‘c’ และ ‘d’ ตามลำดับ

จากนั้นเราใช้ฟังก์ชั่น .reindex() เรียก labels ของข้อมูล แต่หนึ่งใน labels ที่ระบุนั้นมี label ที่ไม่มีอยู่จริงใน Series ซึ่งก็คือ label ชื่อ x

หากเราใช้ .loc[] method เราจะได้ KeyError แต่เมื่อเราใช้ .reindex() ฟังก์ชั่น เราจะสามารถเรียกดูข้อมูลได้อย่างไม่มีปัญหา โดย label ที่ไม่มีอยู่จริงจะขึ้นแสดงเป็น NaN

Advertisement