2017-08-27 56 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