如何在 pandas.to_datetime 中指定格式
您可以使用pandas.to_datetime()函数将 pandas DataFrame 中的字符串列转换为日期时间列。
使用此函数时,您可以使用格式参数来指定日期的格式,以避免将其从字符串转换为日期时间时出现错误。
该函数使用以下基本语法:
df[' datetime '] = pd. to_datetime (df[' my_date_column '], format=' %m%d%Y %H:%M:%S '])
以下是您可以为格式参数提供的最常见指令:
- %m :月份为带零的数字(01, 02, … 12)
- %d :月份中的第几天,带零的数字(01, 02, … 31)
- %y :以世纪为数字的年份(2020、2021、2022 等)
- %H :小时(24 小时制),用零填充的数字(00、01、…23)
- %I :时间(12 小时制),用零填充的数字(01, 02, … 12)
- %p :上午或下午
- %M :以数字形式表示的分钟,以零完成 (00, 01, … 59)
- %S :第二个以数字形式用零完成(00、01、…59)
有关指南的完整列表,请参阅此页。
以下示例展示了如何在不同场景下使用to_datetime()函数中的格式参数。
示例:在 pandas.to_datetime 中指定格式
假设我们有以下 pandas DataFrame,其中包含有关零售店不同日期的总销售额的信息:
import pandas as pd #createDataFrame df = pd. DataFrame ({' date ': ['10012023 4:15:30', '10042023 7:16:04', '10062023 9:25:00', '10142023 15:30:50', '10152023 18:15:00'], ' sales ': [100, 140, 235, 120, 250]}) #view DataFrame print (df) dirty dates 0 10012023 4:15:30 100 1 10042023 7:16:04 140 2 10062023 9:25:00 235 3 10142023 15:30:50 120 4 10152023 18:15:00 250 #view data type of each column in DataFrame print ( df.dtypes ) date object dirty int64 dtype:object
我们可以看到日期列当前是一个字符串(即对象)列。
假设我们尝试使用pandas.to_datetime()将此列转换为日期时间:
#attempt to convert date column to datetime format
df[' date '] = pd. to_datetime (df[' date '])
ParserError: month must be in 1..12: 10012023 4:15:30 present at position 0
我们收到错误,因为pandas.to_datetime()函数无法识别日期列当前采用的日期和时间格式。
我们还可以使用format参数来指定列的格式:
#convert date column to datetime format
df[' date '] = pd. to_datetime (df[' date '], format=' %m%d%Y %H:%M:%S ')
#view DataFrame
print (df)
dirty dates
0 2023-10-01 04:15:30 100
1 2023-10-04 07:16:04 140
2 2023-10-06 09:25:00 235
3 2023-10-14 15:30:50 120
4 2023-10-15 18:15:00 250
#view updated type of each column
print ( df.dtypes )
date datetime64[ns]
dirty int64
dtype:object
我们可以看到日期列已成功转换为日期时间列,并且我们没有收到任何错误,因为我们使用格式参数来指定日期列的确切格式。
注意:您可以在此处找到 pandas to_datetime()函数的完整文档。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作:
如何在 Pandas 中创建日期范围
如何在 Pandas 中将时间戳转换为日期/时间
如何计算pandas中两个日期之间的差异