针对python中的特定小时

时间:2017-02-10 10:31:57

标签: python pandas

我需要在python中执行此任务的时间函数:A%= B * C仅适用于05:00h到00:00h之间的时间,否则为100%。

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 个答案:

答案 0 :(得分: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