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

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


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

เพื่อแก้ปัญหานี้ เราจะปฏิบัติตามแนวทางด้านล่าง -

โซลูชันที่ 1

  • กำหนดคอลัมน์ dataframe 'datetime' โดยใช้ pd.date_range() มีการกำหนดไว้ด้านล่าง

pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)})
  • ตั้งค่าสำหรับตัวแปร loop d เพื่อเข้าถึงคอลัมน์ df['datetime'] ทีละรายการ

  • แปลงวันที่และเวลาจาก for loop และบันทึกเป็น 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

  • กำหนดดาต้าเฟรม

  • ใช้ฟังก์ชัน 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