วิธีแปลงคอลัมน์เป็น datetime ใน pandas


บ่อยครั้งที่คุณอาจสนใจที่จะแปลงหนึ่งคอลัมน์ขึ้นไปของ DataFrame ของ pandas เป็นรูปแบบ DateTime โชคดีที่ทำได้ง่ายๆ โดยใช้ฟังก์ชัน to_datetime()

บทช่วยสอนนี้แสดงตัวอย่างหลายประการของการใช้ฟังก์ชันนี้ใน DataFrame ต่อไปนี้:

 import numpy as np
import pandas as pd

#createDataFrame
df = pd.DataFrame({'event': ['A', 'B', 'C'],
                   'start_date': ['20150601', '20160201', '20170401'],
                   'end_date': ['20150608', '20160209', '20170416'] })

#view DataFrame
df

	event start_date end_date
0 A 20150601 20150608
1 B 20160201 20160209
2 C 20170401 201704161

#view column data types
df. dtypes

event object
start_date object
end_date object
dtype:object

ตัวอย่างที่ 1: แปลงคอลัมน์เดี่ยวเป็น DateTime

รหัสต่อไปนี้แสดงวิธีการแปลงคอลัมน์ “start_date” จากสตริงเป็นรูปแบบ DateTime:

 #convert start_date to DateTime format
df['start_date'] = pd. to_datetime (df['start_date'])

#view DataFrame
df

        event start_date end_date
0 A 2015-06-01 20150608
1 B 2016-02-01 20160209
2 C 2017-04-01 20170416

#view column date types
df. dtypes

event object
start_date datetime64[ns]
end_date object
dtype:object

โปรดทราบว่าฟังก์ชัน to_datetime() นั้นชาญฉลาดและมักจะอนุมานรูปแบบวันที่ที่ถูกต้องที่จะใช้ได้ แต่คุณยังสามารถระบุรูปแบบที่จะใช้กับอาร์กิวเมนต์ รูปแบบ ได้:

 #convert start_date to DateTime format
df['start_date'] = pd. to_datetime (df['start_date'], format=' %Y%m%d ')

#view DataFrame
df

        event start_date end_date
0 A 2015-06-01 20150608
1 B 2016-02-01 20160209
2 C 2017-04-01 20170416

#view column date types
df. dtypes

event object
start_date datetime64[ns]
end_date object
dtype:object

ตัวอย่างที่ 2: แปลงหลายคอลัมน์เป็น DateTime

รหัสต่อไปนี้แสดงวิธีการแปลงคอลัมน์ “start_date” และ “end_date” จากสตริงเป็นรูปแบบ DateTime:

 #convert start_date and end_date to DateTime formats
df[['start_date', 'end_date']] = df[['start_date', 'end_date']]. apply (pd. to_datetime )

#view DataFrame
df

	event start_date end_date
0 A 2015-06-01 2015-06-08
1 B 2016-02-01 2016-02-09
2 C 2017-04-01 2017-04-16

#view column date types
df. dtypes

event object
start_date datetime64[ns]
end_date datetime64[ns]
dtype:object

ตัวอย่างที่ 3: แปลงคอลัมน์เป็นรูปแบบ DateTime ด้วยวินาที

ในบางกรณี คุณอาจมีคอลัมน์ที่มีวันที่ตลอดจนชั่วโมง นาที และวินาที เช่น DataFrame ต่อไปนี้:

 #createDataFrame
df = pd.DataFrame({'event': ['A', 'B', 'C'],
                   'start_date': ['20150601043000', '20160201054500', '20170401021215'],
                   'end_date': ['20150608', '20160209', '20170416'] })

#view DataFrame
df

        event start_date end_date
0 A 20150601043000 20150608
1 B 20160201054500 20160209
2 C 20170401021215 20170416

ขอย้ำอีกครั้งว่าฟังก์ชัน to_datetime() นั้นฉลาดและมักจะอนุมานรูปแบบที่ถูกต้องที่จะใช้โดยที่เราไม่ต้องระบุ:

 #convert start_date to DateTime format
df['start_date'] = pd. to_datetime (df['start_date'])

#view DataFrame
df

        event start_date end_date
0 A 2015-06-01 04:30:00 20150608
1 B 2016-02-01 05:45:00 20160209
2 C 2017-04-01 02:12:15 20170416

#view column date types
df. dtypes

event object
start_date datetime64[ns]
end_date object
dtype:object

แน่นอนว่า โดยทั่วไปแล้ว คุณอาจพบรูปแบบ DateTime แปลกๆ มากมาย ดังนั้นคุณอาจต้องใช้อาร์กิวเมนต์ รูปแบบ เพื่อบอก Python อย่างชัดเจนว่าควรใช้รูปแบบ DateTime ใด

ในกรณีเหล่านี้ โปรดดู หน้านี้ เพื่อดูรายการ ตัวดำเนินการ %DateTime ทั้งหมดที่คุณสามารถใช้เพื่อระบุรูปแบบ

แหล่งข้อมูลเพิ่มเติม

วิธีแปลง DateTime เป็นวันที่ใน Pandas
วิธีแปลงสตริงให้ลอยใน Pandas

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *