在 python 中使用多种日期时间格式
Working with more than one datetime format in 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
with specify both formats and errors='coerce'
for missing values if no match and then replace them by another Series
in Series.fillna
:
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
下面是示例数据
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
with specify both formats and errors='coerce'
for missing values if no match and then replace them by another Series
in Series.fillna
:
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