Python pd.to_datetime函数的解析
1.简介
在Python的pandas库中,pd.to_datetime
函数用于将输入的日期或时间数据转换为datetime64[ns]
类型的pandas对象。本文将详细解析该函数的用法及示例。
2.函数签名
pandas.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False,
utc=None, box=True, format=None, exact=True, unit=None,
infer_datetime_format=False, origin='unix', cache=False)
- arg:表示要转换为日期时间的对象,可以是字符串、数组、序列、数据帧、整数或浮点数。该参数是必需的。
- errors:表示DateParseError时的处理方式,可选值为’raise’、’coerce’和’ignore’。默认为’raise’,即尝试解析错误会抛出异常。
- dayfirst:表示是否优先解析日期的天。默认为False,即优先解析年份。
- yearfirst:表示是否优先解析日期的年份。默认为False,即优先解析天数。
- utc:表示是否将输入解释为UTC。默认为None。
- box:表示是否统一将输入装入pandas对象。默认为True。
- format:表示自定义输入日期时间的格式字符串。默认为None。
- exact:表示是否要求精确匹配格式的格式化字符串。默认为True。
- unit:表示输入的时间单位,可选值为’ns’、’us’、’ms’、’s’。默认为None,即自动检测。
- infer_datetime_format:表示是否试图通过检查输入来自行推断格式。默认为False。
- origin:表示时间的基准,可选值为’unix’、’windows’。默认为’unix’。
- cache:表示是否缓存可解析的日期时间对象。默认为False。
3.常见用法
3.1 将字符串转换成日期时间
首先,我们可以通过to_datetime
函数将一个字符串转换成日期时间类型的对象。
import pandas as pd
str_date = '2021-01-01'
date = pd.to_datetime(str_date)
print(date)
运行结果:
2021-01-01 00:00:00
3.2 将字符串数组转换成日期时间对象数组
to_datetime
函数还可以处理字符串数组,并返回相应的日期时间对象数组。例如,我们有一个包含多个日期字符串的数组,可以使用to_datetime
函数将其转换为日期时间对象数组。下面的示例将一个字符串的列表转换为日期时间对象的列表。
str_dates = ['2021-01-01', '2021-01-02', '2021-01-03']
dates = pd.to_datetime(str_dates)
print(dates)
运行结果:
DatetimeIndex(['2021-01-01', '2021-01-02', '2021-01-03'], dtype='datetime64[ns]', freq=None)
3.3 处理不同格式的日期字符串
to_datetime
函数默认可以处理许多常见的日期字符串格式,例如'2021-01-01'
、'2021/01/01'
、'2021-01-01 12:00:00'
等。如果输入的日期字符串不符合上述常见格式,并且能够通过指定格式字符串进行解析,那么我们也可以使用format
参数来指定日期字符串的格式。下面的示例将日期字符串'20210101'
转换为日期时间对象。
str_date = '20210101'
date = pd.to_datetime(str_date, format='%Y%m%d')
print(date)
运行结果:
2021-01-01 00:00:00
3.4 处理错误格式的日期字符串
当输入的日期字符串无法被解析为日期时间对象时,默认情况下,to_datetime
函数将引发DateParseError
异常。如果我们希望在遇到无法解析的字符串时返回缺失值或空值,可以使用errors
参数将'raise'
改为'coerce'
。下面的示例将'2021-01-01'
和'ABC'
两个字符串转换为日期时间对象。
str_dates = ['2021-01-01', 'ABC']
dates = pd.to_datetime(str_dates, errors='coerce')
print(dates)
运行结果:
DatetimeIndex(['2021-01-01', 'NaT'], dtype='datetime64[ns]', freq=None)
可以看到,无法解析的字符串'ABC'
被转换为NaT
,表示缺失的日期时间值。
3.5 转换Unix时间戳
to_datetime
函数还可以接受整数或浮点数类型的输入,表示Unix时间戳。下面的示例将一个Unix时间戳转换为日期时间对象。
timestamp = 1609459200
datetime = pd.to_datetime(timestamp, unit='s')
print(datetime)
运行结果:
2021-01-01 00:00:00
3.6 推断日期时间格式
如果输入的日期字符串不包含格式信息,to_datetime
函数会尝试推断日期时间的格式。这可以通过将infer_datetime_format
参数设置为True来启用。下面的示例演示了如何使用infer_datetime_format
参数来推断日期字符串的格式。
str_dates = ['2021-01-01', '2021/01/02', '01/03/2021']
dates = pd.to_datetime(str_dates, infer_datetime_format=True)
print(dates)
运行结果:
DatetimeIndex(['2021-01-01', '2021-01-02', '2021-01-03'], dtype='datetime64[ns]', freq=None)
4.总结
本文详细讲解了Python中pandas库中的to_datetime
函数的用法。该函数可以将输入的日期或时间数据转换为datetime64[ns]
类型的pandas对象。我们可以将字符串转换成日期时间,将字符串数组转换成日期时间对象数组,处理不同格式的日期字符串,处理错误格式的日期字符串,转换Unix时间戳,以及推断日期时间字符串的格式。掌握to_datetime
函数的用法可以方便地处理日期和时间相关的数据,使得数据分析和处理更加高效。