2014-12-04 181 views
0

丢失所有日期给出一个Pandas系列及datetime片或范围的日期,我怎样才能从datetime片或范围都在series所有日期?熊猫系列:从日期时间切片或范围

Ex: 
     #my date time slice/ date_range 
     st = datetime.datetime(2014, 8, 31, 0, 0) 
     en = datetime.datetime(2014, 9, 7, 0, 0) 
     date_slice = slice(st,en) 
     rng = pd.date_range('08-31-2014', periods=8, freq='D') 

     #my series 
     s = pd.Series({'09-01-2014': 1, 
         '09-02-2014': 1, 
         '09-03-2014': np.nan, 
         '09-04-2014': 1, 
         '09-06-2014': 1}) 

在这个例子中,我想在strdatetime格式

['08-31-2014', '09-05-2014' , '09-07-2014'] 

回答

2

DatetimeIndex.difference返回日期的数组返回有序集合的区别:

In [573]: (rng.difference(pd.to_datetime(s.index))).format() 
Out[573]: ['2014-08-31', '2014-09-05', '2014-09-07'] 

In [598]: (rng.difference(pd.to_datetime(s.index))).format(formatter=lambda x: x.strftime('%m-%d-%Y')) 
Out[598]: ['08-31-2014', '09-05-2014', '09-07-2014'] 
+0

什么版本的熊猫是你使用?也许这是固定在更新的版本,但在'0.14.1'我没有得到期望的结果,我实际上从'rng'获得日期范围 – pyCthon 2014-12-04 23:06:44

+0

使用'rng.diff(s.index)相同的结果。 format()'必须是具有'0.14.1'的错误。 – pyCthon 2014-12-04 23:10:04

+0

's.index'是一个字符串索引。您需要将其转换为'DatetimeIndex'。你是否在调用'pd.to_datetime',如'rng.difference(pd.to_datetime(s.index))。tolist()'? (我正在使用版本0.15.1,但希望没关系。) – unutbu 2014-12-04 23:14:43