熊猫-同一列中不同格式的格式化日期列

时间:2019-05-23 06:41:00

标签: pandas

我正在尝试将时间戳列转换为以下格式:

预期输出:2019-05-20 13:25:00

以下是我的数据框的显示方式:

item, date
item_1, 2019-05-19 22:47:51.722615
item_2, 22/05/19 9:43

我尝试执行以下操作:

pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S').dt.strftime(
    '%Y-%m-%d %H:%M:%S')

我不断收到错误消息ValueError: time data 22/05/19 9:43 doesn't match format specified

1 个答案:

答案 0 :(得分:2)

如果可能,请删除参数format

df['date1'] = pd.to_datetime(df['date']).dt.strftime('%Y-%m-%d %H:%M:%S')

如果需要指定所有格式,请为errors='coerce'的参数NaN添加不匹配的值,因此将Series.round用作最终日期时间:

d1 = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
d2 = pd.to_datetime(df['date'], format='%d/%m/%y %H:%M', errors='coerce')

df['date2'] = d1.combine_first(d2).dt.strftime('%Y-%m-%d %H:%M:%S')
print (df)
     item                        date                date1  \
0  item_1  2019-05-19 22:47:51.722615  2019-05-19 22:47:51   
1  item_2               22/05/19 9:43  2019-05-22 09:43:00   

                 date2  
0  2019-05-19 22:47:51  
1  2019-05-22 09:43:00