【发布时间】:2020-07-31 18:27:56
【问题描述】:
我正在尝试将所有日期转换为日期时间数据类型,但我有一个具有两种不同格式的系列。
上下文
我无法控制我们如何接收此数据集。不幸的是,我们的客户使用%d/%m/%Y 格式将其发送给我们。我正在从 excel 导入数据,但 excel 格式化了一些日期,以便将其导入为 '%Y/%m/%d %H:%M:%S'。我将日期列转换为字符串,下面是我尝试过的。
我的代码
import pandas as pd
dates_str = pd.Series(['2020-03-01 00:00:00', '23/01/20', '2020-06-01 00:00:00', '24/01/20', '2020-06-25 00:00:00', '13/01/20'])
date_formats = ['%Y/%m/%d %H:%M:%S', '%d/%m/%Y']
for date_format in date_formats:
try:
dates_str = pd.to_datetime(arg=dates_str, format=date_format) # try to get the date
break # if correct format, don't test any other formats
except ValueError:
pass # if incorrect format, keep trying other formats
我知道它不起作用的原因是 Try except 异常处理程序没有遍历每一行。我知道我可以自己循环遍历每一行,但这绝对不是最有效的方式。
【问题讨论】:
-
你看过 dateutils:dateutil.readthedocs.io/en/stable/parser.html 可能有帮助
标签: python python-3.x pandas datetime formatting