สมมติว่าคุณมีคอลัมน์ datetime ใน DataFrame และต้องการแยกวันที่และเวลา ผลลัพธ์จะเป็นดังนี้:
datetime date time 0 2020-01-01 07:00:00 2020-01-06 07:00:00 1 2020-01-02 07:00:00 2020-01-06 07:00:00 2 2020-01-03 07:00:00 2020-01-06 07:00:00 3 2020-01-04 07:00:00 2020-01-06 07:00:00 4 2020-01-05 07:00:00 2020-01-06 07:00:00 5 2020-01-06 07:00:00 2020-01-06 07:00:00
ในการแก้ปัญหานี้ เราจะใช้ 2 วิธีดังนี้:
วิธีที่ 1
กำหนดคอลัมน์ 'datetime' ของ DataFrame โดยใช้ pd.date_range() ดังนี้:
pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)})
ใช้ลูป for เพื่อเข้าถึงแต่ละค่าในคอลัมน์ df['datetime']
แปลงวันที่และเวลาจากลูป for แล้วบันทึกเป็น df['date'] และ df['time'] ดังนี้:
for d in df['datetime']:
df['date'] = d.date()
df['time'] = d.time()
ตัวอย่าง
ลองดูโค้ดต่อไปนี้เพื่อเข้าใจได้ดียิ่งขึ้น:
import pandas as pd
df = pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)})
print("DataFrame is:\n", df)
for d in df['datetime']:
df['date'] = d.date()
df['time'] = d.time()
print(df)
ผลลัพธ์
DataFrame is: datetime 0 2020-01-01 07:10:00 1 2020-01-02 07:10:00 2 2020-01-03 07:10:00 3 2020-01-04 07:10:00 4 2020-01-05 07:10:00 5 2020-01-06 07:10:00 Date-time-hour-minutes: datetime date time 0 2020-01-01 07:10:00 2020-01-06 07:10:00 1 2020-01-02 07:10:00 2020-01-06 07:10:00 2 2020-01-03 07:10:00 2020-01-06 07:10:00 3 2020-01-04 07:10:00 2020-01-06 07:10:00 4 2020-01-05 07:10:00 2020-01-06 07:10:00 5 2020-01-06 07:10:00 2020-01-06 07:10:00
วิธีที่ 2
กำหนด DataFrame
ใช้ฟังก์ชัน pd.to_datetime() ภายใน df['datetime'] และเลือกวันที่ด้วย dt.date แล้วบันทึกเป็น df['date']
ใช้ฟังก์ชัน pd.to_datetime() ภายใน df['datetime'] และเลือกเวลาด้วย dt.time แล้วบันทึกเป็น df['time']
ตัวอย่าง
ลองดูโค้ดต่อไปนี้เพื่อเข้าใจได้ดียิ่งขึ้น:
import pandas as pd
df = pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:10',periods=6)})
print("DataFrame is:\n", df)
df['date'] = pd.to_datetime(df['datetime']).dt.date
df['time'] = pd.to_datetime(df['datetime']).dt.time
print("Date-time-hour-minutes:\n", df)
ผลลัพธ์
DataFrame is: datetime 0 2020-01-01 07:10:00 1 2020-01-02 07:10:00 2 2020-01-03 07:10:00 3 2020-01-04 07:10:00 4 2020-01-05 07:10:00 5 2020-01-06 07:10:00 Date-time-hour-minutes: datetime date time 0 2020-01-01 07:10:00 2020-01-06 07:10:00 1 2020-01-02 07:10:00 2020-01-06 07:10:00 2 2020-01-03 07:10:00 2020-01-06 07:10:00 3 2020-01-04 07:10:00 2020-01-06 07:10:00 4 2020-01-05 07:10:00 2020-01-06 07:10:00 5 2020-01-06 07:10:00 2020-01-06 07:10:00