Remove Missing Rows
remove_missing_rows · missing · any
2026-09-23
กำลังประมวลผล…
remove_missing_rows · missing · any
2026-09-23
บางคอลัมน์ขาดไม่ได้ เช่น รหัสลูกค้าหรือวันที่ทำรายการ ถ้าค่าหายไปแถวนั้นก็ใช้วิเคราะห์ต่อไม่ได้ เทคนิคนี้ลบทั้งแถวเมื่อคอลัมน์ที่คุณระบุไม่มีข้อมูล และนับจำนวนแถวที่ลบให้เห็นก่อนตัดสินใจเสมอ
customer_id หรือ order_date ว่างdetect_null_like — ค่าอย่าง "-" หรือ "N/A" ยังไม่ถือว่าว่าง จึงลบไม่ครบfill_missing หรือ drop_sparse_columns ก่อนcolumnsmode: any ลบแถวที่มีอย่างน้อยหนึ่งคอลัมน์เป็น null ส่วน mode: all ลบเฉพาะแถวที่ทุกคอลัมน์ที่เลือกเป็น null"" ไม่ใช่ null จึงไม่ถูกลบ ถ้าต้องการให้นับเป็นว่างด้วย ให้รัน detect_null_like หรือเปิด emptyToNull ของ trim_whitespace ก่อน| name | city | any | all | |---|---|---|---| | A | ไทย | เก็บ | เก็บ | | null | ไทย | ลบ | เก็บ | | null | null | ลบ | ลบ | | "" | null | ลบ | เก็บ |
| Parameter | Type | Default |
|---|---|---|
columns | string[] | — |
mode | any | all | "any" |
import json
def remove_missing_rows(rows, columns, mode='any'):
def missing(row, column):
return row.get(column) is None
if mode == 'any':
return [row for row in rows if not any(missing(row, c) for c in columns)]
return [row for row in rows if not all(missing(row, c) for c in columns)]
rows = [
{'name': 'A', 'city': 'ไทย'},
{'name': None, 'city': 'ไทย'},
{'name': None, 'city': None},
{'name': '', 'city': None},
]
result = {
'any': remove_missing_rows(rows, ['name', 'city'], 'any'),
'all': remove_missing_rows(rows, ['name', 'city'], 'all'),
}
print(json.dumps(result, ensure_ascii=False))
ไฟล์คำสั่งซื้อมี 12,000 แถว แต่ order_date ว่าง 340 แถวเพราะระบบเก่าไม่บันทึกไว้ เลือกคอลัมน์ order_date โหมด any แล้วดู Preview ว่าจะหายไป 340 แถว ถ้าตัวเลขนี้มากกว่าที่คาด ให้กลับไปตรวจว่าค่าที่หายเป็น null จริงหรือเป็นข้อความอย่าง "ไม่ระบุ" ที่ต้องจัดการด้วย detect_null_like ก่อน
ใช้ detect_null_like ก่อนเสมอเพื่อให้ค่าที่แปลว่าว่างกลายเป็น null จริง ใช้ fill_missing แทนเมื่ออยากเก็บแถวไว้ และใช้ remove_empty_rows เมื่อสนใจแถวที่ว่างทั้งแถวมากกว่าคอลัมน์ใดคอลัมน์หนึ่ง