下面是示例数据
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