在处理时间序列时,由于秒级别的数据重复率非常高,所以想将秒数据的秒处理掉,只保留分精确度。
data['location_time'][1].strftime('%Y-%m-%d %H:%M')
遇到这种情况:
AttributeError: 'str' object has no attribute 'strftime'
在stackoverflow
中查询到You should use datetime object, not str.
所以这里我们需要将str
转换为datetime
类型
d= datetime.strptime(data['location_time'][1],'%Y/%m/%d %H:%M')
这里是我的尝试。
但是无法对datetime
对象无法去除后两位,所以需要将datetime
转化为str
:
d.strftime('%Y/%m/%d %H:%M')
最后可以整合为
from datetime import datetime
data_time = []
pattern = '%Y/%m/%d %H:%M'
for x in data['location_time']:
d= datetime.strptime(x,pattern)
d.strftime(pattern)
data_time.append(d)
data['location_time'] = data_time
产生的结果:
后面又想到,经纬度小数点后两位还保持一致,那么认为这个误差应该是可以忽略的。这个时候就想做这样的处理:如果经纬度直到小数点后两位还一致,那么处理之后再去重
formator = '{0:.02f}'.format
data.iloc[:,3:5] = data.iloc[:,3:5].applymap(formator)
这里直观的可以看到,就实现了上述的效果。
参考链接:
1.Python中datetime时间戳精确到单位的用法
2.stackoverflow相关页
3.python 时间格式datetime、str与date的相互转换