Объект datetime.time не имеет атрибута, где Python - PullRequest
0 голосов
/ 07 января 2020

Мне нужно проверить, проверил ли сотрудник во время перерыва. Для этого мне нужно посмотреть, есть ли время , в котором Door Name равно RDC_OUT-1 в интервале [12:15:00; 14:15:00]

import pandas as pd

df_by_date= pd.DataFrame({'Time':['01/02/2019 07:02:07', '01/02/2019 10:16:55', '01/02/2019 12:27:20', '01/02/2019 14:08:58','01/02/2019 15:32:28','01/02/2019 17:38:54'],
 'Door Name':['RDC_OUT-1', 'RDC_IN-1','RDC_OUT-1','RDC_IN-1','RDC_OUT-1','RDC_IN-1']})



df_by_date['Time'] = pd.to_datetime(df_by_date['Time'])
df_by_date['hours']=pd.to_datetime(df_by_date['Time'], format='%H:%M:%S').apply(lambda x: x.time())
print('hours \n',df_by_date['hours'])

out = '12:15:00'
inn = '14:15:00'
pause=0
for i in range (len(df_by_date)):
    if (out < str((df_by_date['hours'].iloc[i]).where(df_by_date['Door Name'].iloc[i]=='RDC_IN-1')) < inn)  :
        pause+=1
        print('Break outside ')
    else:
        print('Break inside')

При выполнении кода выше я получил эту ошибку:

if (out < ((df_by_date['hours'].iloc[i]).where(df_by_date['Door Name'].iloc[i]=='RDC_OUT-1')) < inn)  :

AttributeError: объект datetime.time имеет без атрибута 'где'

1 Ответ

1 голос
/ 07 января 2020

Когда вы перебираете DataFrame / Series , вы выбираете одну ячейку за раз.

Выбираемая ячейка имеет тип datetime.time

Тем не менее, where работает только с полным DataFrame / Series вместо того, чтобы иметь его в oop.

Как,

sub_df = df_by_date['hours'].where(condition)

и затем для подсчета вы можете использовать len(sub_df)

...