Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

เขียนโปรแกรมแยกวันที่และเวลาจากคอลัมน์ datetime ใน Python Pandas


สมมติว่าคุณมีคอลัมน์ 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