您好,重新格式化日期的最简单方法是“2017-01-01T19:33:28 + 0000”
例如,该日期表示2017年1月1日下午7:33:28。
我对删除月,日和年感兴趣,仅保留小时和分钟。
在我正在查看的数据中,用户的软件命令在同一天,超过2小时(晚上7点到9点)进行。 (见图)
我想重新格式化时间,以便在这两个小时内轻松分析命令分配。
对Python或r的建议?也许是为了制作时间间隔?
更新我想使用下面发布的解决方案
来自datetime import datetime
x = datetime.strptime('2017-01-01T19:33:28 + 0000', '%Y-%间 - %的dT%H:%M:%S%Z')\ .strftime( '%H:%M')
但是我只能对列中的一个值执行此操作。如何将它应用于整个列中的所有值?
谢谢!
答案 0 :(得分:2)
您可以使用dateutil
:
import dateutil
t = dateutil.parse("2017-01-01T19:33:28+0000")
t.hour # prints 19
t.minute # prints 33
您可以决定以后的小时和分钟来做什么。
编辑:顺便说一句,这是在python中。
答案 1 :(得分:1)
在R中,lubridate
包有很多选项(doc)。
library(lubridate)
t <- as_datetime("2017-01-01T19:33:28+0000")
hour(t)
#[1] 19
minute(t)
#[1] 33
您可能对interval
功能特别感兴趣。
答案 2 :(得分:0)
这是一个使用datetime
的Python解决方案,它属于标准库:
from datetime import datetime
x = datetime.strptime('2017-01-01T19:33:28+0000', '%Y-%m-%dT%H:%M:%S%z')\
.strftime('%H:%M')
# '19:33'
答案 3 :(得分:0)
不像dateutil
那样功能丰富,但已向量化:numpy
>>> import numpy as np
>>>
>>> example
['2018-01-01T12:00:00+0000', '2018-01-01T16:37:45+0000', '2018-01-01T21:15:30+0000', '2018-01-02T01:53:15+0000', '2018-01-02T06:31:00+0000', '2018-01-02T11:08:45+0000']
>>>
# create numpy array, 'M8' stands for datetime64
>>> A = np.array(example, dtype='M8')
>>> A
array(['2018-01-01T12:00:00', '2018-01-01T16:37:45',
'2018-01-01T21:15:30', '2018-01-02T01:53:15',
'2018-01-02T06:31:00', '2018-01-02T11:08:45'],
dtype='datetime64[s]')
>>>
# we have to manually extract hours and minutes but it is easy:
# convert to units 'h' (hour, discarding minutes and seconds) and
# 'D' (day, also discarding smaller units) and take the difference
>>> hours = A.astype('M8[h]') - A.astype('M8[D]')
# and similar for minutes
>>> minutes = A.astype('M8[m]') - A.astype('M8[h]')
>>> hours
array([12, 16, 21, 1, 6, 11], dtype='timedelta64[h]')
>>> minutes
array([ 0, 37, 15, 53, 31, 8], dtype='timedelta64[m]')
答案 4 :(得分:0)
这是另一种润滑剂溶液(对于R):
library(lubridate)
t<-ymd_hms("2017-01-01T19:33:28+0000")
hour(t)
#[1] 19
minute(t)
#[1] 33
答案 5 :(得分:0)
R中的无添加包方法是:
as.POSIXct( "2017-01-01T19:33:28+0000", format="%Y-%m-%dT%H:%M:%S%z", tz="UTC" )
[1] "2017-01-01 19:33:28 UTC"