Skip to content

4.2 pandas Datetime & NaT

ข้อมูลวันที่จริงมาเป็น text เสมอ — “2026-04-24”, “April 24, 2026”, “24/04/2026” — pandas ต้องแปลงให้หมด และเมื่อแปลงไม่ได้ มันให้ NaT

pd.to_datetime() — เครื่องมือหลัก

Section titled “pd.to_datetime() — เครื่องมือหลัก”

pd.to_datetime() คือฟังก์ชันที่ pandas ใช้แปลง text (หรือ number) ให้เป็น Timestamp — object ที่เก็บวันที่+เวลา พร้อมคำนวณได้

import pandas as pd
pd.to_datetime("2026-04-24")
# Timestamp('2026-04-24 00:00:00')

เหมือน NaN สำหรับ numbers — NaT คือ “missing date”

  • NaN = Not a Number
  • NaT = Not a Time

NaT แพร่กระจาย ผ่านการคำนวณ เหมือน NaN:

pd.NaT + pd.Timedelta(days=7) # NaT — ไม่มีวันที่ + 7 วัน = ยังไม่มีวันที่
pd.NaT > pd.Timestamp("2026-01-01") # False (ทุก comparison = False)

Sheets ไม่มี concept “NaT” โดยตรง — แต่มีปัญหาที่คล้ายกัน:

สร้างข้อมูลใน A1:B5:

namejoin_date
Alice2024-01-15
Bob(ว่าง)
Carol2024-03-20
Davehello
=DATEDIF(B2, TODAY(), "D") → จำนวนวัน (Alice = ตัวเลข)
=DATEDIF(B3, TODAY(), "D") → #VALUE! error (Bob = ว่าง)
=DATEDIF(B5, TODAY(), "D") → #VALUE! error (Dave = ไม่ใช่วันที่)

วิธี handle: ใช้ IFERROR

=IFERROR(DATEDIF(B2, TODAY(), "D"), "missing")

Sheets ไม่มี NaT — ต้องจัดการ error เองทุกครั้ง

เครื่องมือMissing Date
Google Sheetsempty cell หรือ #VALUE! error
Cไม่มี — ต้องใช้ sentinel value เอง
pandasNaT (Not a Time)
SQLNULL

ทุกตัว propagate ผ่านการคำนวณ: missing + 7 days = missing