在python中使用多个日期时间格式



下面是示例数据

Datetime
11/19/2020 9:48:50 AM
12/17/2020 2:41:02 PM
2020-02-11 14:44:58
2020-28-12 10:41:02
2020-05-12 06:31:39

11/19/2020以mm/dd/yyyy表示,而2020-28-12以yyyy-dd-mm表示。

应用pd后。下面的to_datetime是我得到的输出。

Date
2020-11-19 09:48:50
2020-12-17 22:41:02
2020-02-11 14:44:58
2020-28-12 10:41:02
2020-05-12 06:31:39

如果输入数据带有斜杠(/),即11/19/2020,则输入本身的格式为mm/dd/yyyy,当数据带有破折号(-),即2020-02-11,则格式为yyyy-dd-mm。但是在应用了pd之后。To_datetime日期时间正在被交换

前两个输出是正确的。下面三个需要更正为

2020-11-02 14:44:58
2020-12-28 10:41:02
2020-12-05 06:31:39

请建议使用通用格式,即yyyy-mm-dd格式。

使用to_datetime指定格式,如果不匹配则使用errors='coerce',然后用Series.fillna中的另一个Series替换它们:

d1 = pd.to_datetime(df['datetime'], format='%Y-%d-%m %H:%M:%S', errors='coerce')
d2 = pd.to_datetime(df['datetime'], format='%m/%d/%Y %I:%M:%S %p', errors='coerce')
df['datetime'] = d1.fillna(d2)
print (df)
datetime
0 2020-11-19 09:48:50
1 2020-12-17 14:41:02
2 2020-11-02 14:44:58
3 2020-12-28 10:41:02
4 2020-12-05 06:31:39

最新更新