如何将 pandas 中的列转换为日期时间
通常,您可能有兴趣将 pandas DataFrame 的一列或多列转换为 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:将单列转换为日期时间
以下代码显示如何将“start_date”列从字符串转换为日期时间格式:
#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() 函数是智能的,通常可以推断出要使用的正确日期格式,但您也可以通过format参数指定要使用的格式:
#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:将多列转换为日期时间
以下代码显示如何将“start_date”和“end_date”列从字符串转换为日期时间格式:
#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 格式,因此您可能需要使用format参数来告诉 Python 到底要使用哪种 DateTime 格式。
在这些情况下,请参阅此页面以获取可用于指定格式的 %DateTime 运算符的完整列表。