Pandas to_datetime()的用法(附带实例)
在日常工作中,有一件非常麻烦的事就是处理多种表达格式的日期数据。同样是 2024 年 2 月 14 日,可以有很多种格式,如下图所示:

图 1 日期的多种格式
对此,我们需要先将格式统一,然后才能进行后续的工作。Pandas 提供了 to_datetime() 方法,可以帮助我们解决这一问题。
to_datetime() 方法可以用来实现批量日期数据转换,对于处理大数据非常实用和方便,它可以将日期数据转换成我们需要的各种格式。例如,将 2/14/24 和 14~2024 转换为日期格式 2024-02-14。
to_datetime() 方法的语法格式如下:
to_datetime() 方法返回日期时间,各个参数的含义见下表:
【实例】将表示 2024 年 2 月 14 日的各种字符串日期转换为指定日期格式,程序代码如下:
注意,使用 to_datetime() 方法转换日期时,如果日期数据的格式不统一,那么需要指定 format 参数值为 mixed。让 Python 自动推断日期格式。否则,程序将会出现警告信息。
to_datetime() 方法还可以实现将 DataFrame 对象中的多列,如单独的年、月、日列,组合成一列日期。键值是常用的日期缩略语。组合的必选参数为 year、month、day,可选参数为 hour、minute、second、millisecond(毫秒)、microsecond(微秒)、nanosecond(纳秒)。
【实例】将一组数据组合为日期数据,主要代码如下:

图 1 日期的多种格式
对此,我们需要先将格式统一,然后才能进行后续的工作。Pandas 提供了 to_datetime() 方法,可以帮助我们解决这一问题。
to_datetime() 方法可以用来实现批量日期数据转换,对于处理大数据非常实用和方便,它可以将日期数据转换成我们需要的各种格式。例如,将 2/14/24 和 14~2024 转换为日期格式 2024-02-14。
to_datetime() 方法的语法格式如下:
pandas.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=False, format=None, exact=None, unit=None, infer_datetime_format=None, origin='unix', cache=True)
to_datetime() 方法返回日期时间,各个参数的含义见下表:
参数 | 说明 |
---|---|
arg | 整型、浮点型、字符串、日期时间、列表、组、字符串数组、Series 对象、DataFrame 等。 |
errors |
值为 ignore、raise 或 coerce,具体说明如下:
|
dayfirst | 布尔值,默认值为 False,如果 arg 参数是字符串或列表,则指定日期解析顺序;如果参数值为 True,则按日期优先解析数据,例如将 10/11/23 解析为 2023-11-10。 |
yearfirst | 布尔值,默认值为 False,如果 arg 参数是字符串或列表,则指定解析顺序;如果参数值为 True,则按年份优先解析数据,例如将 10/11/23 解析为 2010-11-23。如果 dayfirst 参数和 yearfirst 参数的值都为 True,则按年份优先解析数据。 |
format | 字符串,格式化显示时间,例如“%d/Y%m/%”,注意“%f”将被解析为 ns。另外,参数值也可以指定为“ISO8601”和“mixed”,“ISO8601”表示解析任何 ISO8601 时间字符串,“mixed”表示单独推断每个元素的格式,一般同 dayfirst 参数一起使用。 |
unit | 默认值为ns,表示时间的单位,如 D、s、ms、μs、ns,整数或浮点数。 |
【实例】将表示 2024 年 2 月 14 日的各种字符串日期转换为指定日期格式,程序代码如下:
# 导入pandas模块 import pandas as pd # 解决数据输出时列名不对齐的问题 pd.set_option('display.unicode.east_asian_width', True) # 创建各种格式的字符串日期 df=pd.DataFrame({'原日期':['14-Feb-FEB-24', '02/14/2024', '2024.02.14', '2024/02/14', '20240214'}] # 转换日期 df['转换后的日期']=pd.to_datetime(df['原日期'],format='mixed') print(df)运行程序,结果如下图所示:
原日期 转换后的日期 0 14-Feb-24 2024-02-14 1 02/14/2024 2024-02-14 2 2024.02.14 2024-02-14 3 2024/02/14 2024-02-14 4 20240214 2024-02-14
注意,使用 to_datetime() 方法转换日期时,如果日期数据的格式不统一,那么需要指定 format 参数值为 mixed。让 Python 自动推断日期格式。否则,程序将会出现警告信息。
to_datetime() 方法还可以实现将 DataFrame 对象中的多列,如单独的年、月、日列,组合成一列日期。键值是常用的日期缩略语。组合的必选参数为 year、month、day,可选参数为 hour、minute、second、millisecond(毫秒)、microsecond(微秒)、nanosecond(纳秒)。
【实例】将一组数据组合为日期数据,主要代码如下:
df = pd.DataFrame({'year': [2018, 2019, 2020], 'month': [1, 3, 2], 'day': [4, 5, 14], 'hour': [13, 8, 2], 'minute': [23, 12, 14], 'second': [2, 4, 0]}) df['组合后的日期']=pd.to_datetime(df) print(df)运行程序,结果为:
year month day hour minute second 组合后的日期 0 2022 1 4 13 23 2 2022-01-04 13:23:02 1 2023 3 5 8 12 4 2023-03-05 08:12:04 2 2024 2 14 2 14 0 2024-02-14 02:14:00