2017-02-10 29 views
-1

我需要python中的時間函數來完成此任務:A%= B * C僅適用於05:00h到00:00h之間的時間,否則100%。在Python中定位特定時間

B C Time 
30 3 13:00 
23 4 14:00 
... 
43 2 22:00 
... 
24 3 01:00 

我已經試過這樣:

def A(B, C): 
    for Time in range(00:00, 00:00) 
     return B * C 
    else: 
     return 100% 

但是,這並不工作,我不能使用,因爲整數的時候這種格式。

+1

你能證明你已經嘗試過什麼,因爲這問題,只是要求一個解決方案,你應該張貼的原始數據,你的代碼來重新創建上述DF,任何嘗試,以及期望的輸出應該是多少,謝謝。 – EdChum

+0

我編輯了我的quastion 謝謝 – jovicbg

回答

1

我想你可以先轉換時間to_timedelta,然後通過between創建掩碼。最後使用numpy.where

print (df) 
    B C Time 
0 10 1 03:00 
1 30 3 04:00 
2 23 4 05:00 
3 43 2 22:00 
4 24 3 01:00 

times = pd.to_timedelta(df.Time + ':00') 
print (times) 
0 03:00:00 
1 04:00:00 
2 05:00:00 
3 22:00:00 
4 01:00:00 
Name: Time, dtype: timedelta64[ns] 

mask = times.between('00:00:00','05:00:00') 
print (mask) 
0  True 
1  True 
2  True 
3 False 
4  True 
Name: Time, dtype: bool 

df['D'] = np.where(mask, 100, df.B * df.C) 
print (df) 
    B C Time D 
0 10 1 03:00 100 
1 30 3 04:00 100 
2 23 4 05:00 100 
3 43 2 22:00 86 
4 24 3 01:00 100