2017-08-27 60 views
-1

我有一个数据帧的大熊猫与DateTimeIndex:yyyy-mm-dd HH:MM:SS熊猫:裁剪时间DateTimeIndex根据日期

     A B C 
2015-08-08 16:00:00 1 2 3 
2015-08-08 16:00:08 4 5 6 
... 

我想提取是在一定时间范围内HH:MM:SS行。但是,此时间范围因日期不同而不同yyyy-mm-dd

是否可以使用某种字典将日期映射到时间范围,并相应地剪辑DateTimeIndex?

+0

我认为所有你需要的是str.split ... – KingJohnno

+0

是否每个单独的约会对象有不同的时间范围,还是有范围的模式? (例如星期六,范围是上午8点到上午10点等) – payne

+0

没有明确的模式。它根据统计数据计算(每天) – user3142067

回答

2

您可以按照词典的词典过滤DataFrameslistloc的列表理解进行过滤。

concat他们一个:

print (df) 
        A B C 
2015-08-08 16:00:00 1 2 3 
2015-08-09 13:00:08 4 5 6 
2015-08-09 13:00:10 4 5 7 

d = {'2015-08-08':['16:00:00', '16:00:10'],'2015-08-09':['13:00:08', '13:00:20']} 

df1 = pd.concat([df.loc[k + ' ' + v[0] : k + ' ' + v[1]] for k, v in d.items()]) 
print (df1) 
        A B C 
2015-08-09 13:00:08 4 5 6 
2015-08-09 13:00:10 4 5 7 
2015-08-08 16:00:00 1 2 3 

boolean indexing另一种解决方案:

df1 = pd.concat([df[(df.index >= k + ' ' + v[0]) & 
        (df.index <= k + ' ' + v[1])] for k, v in d.items()]) 
print (df1) 
        A B C 
2015-08-09 13:00:08 4 5 6 
2015-08-09 13:00:10 4 5 7 
2015-08-08 16:00:00 1 2 3