如何将 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 运算符的完整列表

其他资源

如何将 DateTime 转换为 Pandas 中的日期
如何在 Pandas 中将字符串转换为浮点数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注