2015-04-02 29 views
1

我有一个包含时间戳一个DF,例如,蟒多个时间戳到pandas.tslib.Timestamp

0 2014-12-18 10:47:37 
1 2014-12-18 10:47:37 
2 2014-12-18 10:47:37 
3 2015-01-30 04:50:49 
4 2015-03-01 11:16:41 

欲这个划分成的,也就是说,每次30分钟时隙。我看到这样做的方式是将时间戳转换为'pandas.tslib.Timestamp',而不是划分为时间段并将它们分成多个分箱。 但是。转换为datetime.datetime.strptime的第一步仅适用于字符串,不适用于数据框或列表。所以,我发现整个DF转换成pandas.tslib.Timestamp的唯一途径是通过行后去行:

for k in range(len(tbl)): 
     tbl.iloc[k] = datetime.datetime.strptime(str(tbl[k]),"%Y-%m-%d %H:%M:%S") 

这是缓慢的,显然是有办法做到这一点作为一个单一的镜头。 请指教。 谢谢!

回答

0
def time_norm(tmp,delta_T): 
    epoch_ms = tmp.astype(np.int64)//1000000L 
    tbl = epoch_ms//delta_T 
    tbl = tbl - tbl.min() 
    return tbl 

delta_T = 1000 #1 sec 
tmp = pd.to_datetime(tbl) 
tbl = time_norm(tmp,delta_T) 

在某些时候,pd.to_datetime在某些时候没有工作,所以我避免使用它。原来它仍然是解决方案...