我正在Pandas df中处理时间,该日期具有某些完整格式的日期时间:'%d/%m/%Y %I:%M %p',,而有些仅具有:'%d/%m/%Y'。结果,当我尝试使用pd.to_datetime:"time data '24/03/2013'与格式'%d/%m/%Y %I:%M %p' (match)"不匹配时,它给了我错误

有没有一种方法可以将缺少的'%I:%M %p'添加到df中的'24/03/2013'中?

这是我用来转换为日期时间格式的代码:

time = pd.to_datetime(samples.DATE_HOURS,format='%d/%m/%Y %I:%M %p')

最佳答案

设定

tidx = pd.date_range('2016-03-31', periods=5)

samples = pd.concat([
        tidx.to_series().dt.strftime('%d/%m/%Y %I:%M %p'),
        tidx.to_series().dt.strftime('%d/%m/%Y')],
                    ignore_index=True).to_frame('DATE_HOURS')

print(samples)

            DATE_HOURS
0  31/03/2016 12:00 AM
1  01/04/2016 12:00 AM
2  02/04/2016 12:00 AM
3  03/04/2016 12:00 AM
4  04/04/2016 12:00 AM
5           31/03/2016
6           01/04/2016
7           02/04/2016
8           03/04/2016
9           04/04/2016




# dayfirst=True Thx @NickilMaveli
pd.to_datetime(samples.DATE_HOURS, dayfirst=True)

0   2016-03-31
1   2016-04-01
2   2016-04-02
3   2016-04-03
4   2016-04-04
5   2016-03-31
6   2016-04-01
7   2016-04-02
8   2016-04-03
9   2016-04-04
Name: DATE_HOURS, dtype: datetime64[ns]




pd.to_datetime(samples.DATE_HOURS,format='%d/%m/%Y %I:%M %p')



  ValueError:时间数据'31 / 03/2016'与格式'%d /%m /%Y%I:%M%p'不匹配(匹配)




讲故事的道德,不要强迫格式。让to_datetime弄清楚!

09-19 06:00