บทความนี้สาธิตวิธีกรองแถวข้อมูลใน DataFrame โดยคำนวณผลรวมของแต่ละแถว (axis=1) และเก็บเฉพาะแถวที่มีผลรวมมากกว่าเกณฑ์ที่กำหนด
สถานการณ์ตัวอย่าง
มีข้อมูลคะแนนสอบของนักเรียน 3 คน (Jacob, Ted, Jamie) 5 วิชา ต้องการกรองเฉพาะวิชาที่ผลรวมคะแนนของทั้ง 3 คนรวมกัน超過 200 คะแนน
โค้ดตัวอย่าง
import pandas as pd
# สร้าง DataFrame: แถว = วิชา, คอลัมน์ = นักเรียน
dataFrame = pd.DataFrame({
'Jacob_Marks': [95, 90, 70, 85, 88],
'Ted_Marks': [60, 50, 65, 85, 70],
'Jamie_Marks': [77, 76, 60, 45, 50]
})
print("DataFrame ต้นฉบับ:")
print(dataFrame)
# กรองแถวที่ผลรวม > 200
# axis=1 หมายถึงคำนวณแนวนอน (รวมค่าทุกคอลัมน์ในแถวนั้น)
dataFrame = dataFrame[dataFrame.sum(axis=1) > 200]
print("\nDataFrame หลังกรอง (ผลรวม > 200):")
print(dataFrame)
ผลลัพธ์
DataFrame ต้นฉบับ:
Jacob_Marks Jamie_Marks Ted_Marks
0 95 77 60
1 90 76 50
2 70 60 65
3 85 45 85
4 88 50 70
DataFrame หลังกรอง:
Jacob_Marks Jamie_Marks Ted_Marks
0 95 77 60 # ผลรวม = 232
1 90 76 50 # ผลรวม = 216
3 85 45 85 # ผลรวม = 215
4 88 50 70 # ผลรวม = 208
แถวที่ 2 (Index 2) ถูกลบออกเพราะผลรวม = 195 (< 200)
จุดสำคัญ
sum(axis=1)คำนวณผลรวมแนวนอน (ต่อแถว)sum(axis=0)จะคำนวณผลรวมแนวตั้ง (ต่อคอลัมน์)- การ Boolean Indexing:
df[condition]จะคืนค่าเฉพาะแถวที่เงื่อนไขเป็น True