我正在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
弄清楚!