如何将日期时间更改为正常格式?

时间:2017-11-19 00:33:59

标签: python pandas datetime

我有这样的数据 enter image description here 但每当我想更改日期格式或使用日期时,它显示小时应为0 ... 23 如何将所有数据更改为普通格式?

2 个答案:

答案 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')
  • %H - 小时(24小时格式)
  • %M - 分钟
  • %I - 小时(12小时格式)
  • %p - AM或PM