如何正确转换格式为'13:55:07 03-01-2023'的时间戳字符串?
解决pandas日期解析错误:将'日-月-年'格式转换为正确时间戳
你的问题出在pandas默认的日期解析逻辑上——它会把03-01-2023默认识别为月-日-年,所以才得到了错误的2023-03-01。要让它正确解析为日-月-年,有两种可靠方法:
方法1:显式指定日期格式(推荐)
直接告诉pandas你的字符串格式,这是效率最高的方式,尤其适合大数据集:
order_data['exch_tm'] = pd.to_datetime(order_data['exch_tm'], format='%H:%M:%S %d-%m-%Y')
格式符说明:
%H:%M:%S:匹配时间部分的小时:分钟:秒%d-%m-%Y:匹配日期部分的日-月-年
执行后,'13:55:07 03-01-2023'会被正确转换为Timestamp('2023-01-03 13:55:07')。
方法2:使用dayfirst=True参数
如果不确定具体格式,或者格式有轻微变动,可以让pandas优先把日期中的第一个数字当作日:
order_data['exch_tm'] = pd.to_datetime(order_data['exch_tm'], dayfirst=True)
不过这种方式会让pandas尝试多种格式匹配,效率略低于显式指定格式。
内容的提问来源于stack exchange,提问作者Dhruv Chauhan
相关产品推荐
相关产品推荐

