我有这样的数据 enter image description here 但每当我想更改日期格式或使用日期时,它显示小时应为0 ... 23 如何将所有数据更改为普通格式?
答案 0 :(得分:0)
我会解析这两次:
In [11]: dates = ['2015/01/04 23:59', '2015/01/04 24:00', '2015/01/05 00:01', '2015/01/05 00:02', '2015/01/05 00:03', '2015/01/05 00:04', '2015/01/05 00:05']
首先我采用通常的方式(你没有 在这里传递格式参数)。
In [12]: dates1 = pd.Series(pd.to_datetime(dates, format="%Y/%m/%d %H:%M", errors='coerce'))
In [13]: dates1
Out[13]:
0 2015-01-04 23:59:00
1 NaT
2 2015-01-05 00:01:00
3 2015-01-05 00:02:00
4 2015-01-05 00:03:00
5 2015-01-05 00:04:00
6 2015-01-05 00:05:00
dtype: datetime64[ns]
第二次只在小时为24时解析(并在结果中添加日期):
In [14]: dates2 = pd.Series(pd.to_datetime(dates, format="%Y/%m/%d 24:%M", errors='coerce')) + pd.offsets.Day(1)
In [15]: dates2
Out[15]:
0 NaT
1 2015-01-05
2 NaT
3 NaT
4 NaT
5 NaT
6 NaT
dtype: datetime64[ns]
现在你可以用第二个结果填写第一个结果:
In [16]: dates1.fillna(dates2)
Out[16]:
0 2015-01-04 23:59:00
1 2015-01-05 00:00:00
2 2015-01-05 00:01:00
3 2015-01-05 00:02:00
4 2015-01-05 00:03:00
5 2015-01-05 00:04:00
6 2015-01-05 00:05:00
dtype: datetime64[ns]
答案 1 :(得分:0)
请参阅:https://stackoverflow.com/a/31691439/6457938
您可以使用 strptime :
time = "15:45" # 24h format (military)
formaT = datetime.datetime.strptime(time, ,'%H:%M').strftime('%I:%M %p')