如何将pandas DataFrame的object类型日期列转换为datetime格式
问题原因
转换失败的核心原因是使用的格式字符串和实际的日期格式不匹配:你给出的日期样例中日、月份缩写、年份之间用-分隔,但之前用的%d%b%y格式串没有包含分隔符,无法识别原有格式。另外%-d是日期格式化输出时用于去除前导零的参数,不适用于日期解析场景,写了也不会生效。
解决方法
- 优先使用匹配的格式串直接转换,代码如下:
import pandas as pd df['DisbursementDate'] = pd.to_datetime( df['DisbursementDate'], format='%d-%b-%y', # 格式串和实际日期的分隔符、占位符完全对应 errors='raise' # 转换出错时直接抛出异常,方便定位问题 )
- 如果转换时出现月份缩写识别报错,一般是当前系统locale为中文,无法识别英文月份缩写导致,按如下代码临时切换locale即可:
import locale # 保存原有locale配置 old_locale = locale.getlocale(locale.LC_TIME) # 切换到英文locale,根据你的系统二选一即可 # Windows系统用: locale.setlocale(locale.LC_TIME, 'English_US') # Mac/Linux系统用: # locale.setlocale(locale.LC_TIME, 'en_US.UTF-8') # 执行日期转换 df['DisbursementDate'] = pd.to_datetime(df['DisbursementDate'], format='%d-%b-%y') # 恢复原有locale配置 locale.setlocale(locale.LC_TIME, old_locale)
- 转换完成后直接按该列排序即可:
# 按日期升序排序,调整ascending为False可改为降序 df = df.sort_values(by='DisbursementDate', ascending=True)
内容的提问来源于stack exchange,提问作者Carlos Madureira
相关产品推荐
相关产品推荐

