Неправильное преобразование разницы в числах c В Python - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть набор данных:

     A                               B
2019-06-19 09:18:00         2019-06-22 09:14:37
2019-06-27 22:35:00         2019-06-27 22:04:20
2019-06-26 19:50:00         2019-06-26 21:18:45

, где он представляет дату и время для обоих столбцов.

Я хотел построить столбцы C, которые показывают разницу в дате и времени в часах в десятичном формате и примените следующее преобразование.

raw_data['C']= raw_data['B'] - raw_data['A']
raw_data['C']= round(raw_data['C']/np.timedelta64(1,'h'),2)

, и мне удалось получить правильное вычисление значения:

  C               A                         B
71.94    2019-06-22 09:14:37      2019-06-19 09:18:00
-0.51    2019-06-27 22:04:20      2019-06-27 22:35:00
1.48     2019-06-26 21:18:45      2019-06-26 19:50:00

Однако, когда я попытался создать категориальную переменную D, где она будет 'Pass', если столбец C меньше 3, у меня неправильное преобразование для третьей строки. Т.е. это должно быть значение «Pass».

raw_data['D']= "Fail"
raw_data.loc[raw_data['C']<3, 'D']= 'Pass'


  D        C
71.94    Fail
-0.51    Pass
1.48     Fail

Могу ли я знать, каковы возможные причины неудачного преобразования? Спасибо!

1 Ответ

0 голосов
/ 16 февраля 2020

Проверено и у меня работает правильно.

Альтернативное решение с Series.dt.total_seconds, делим на Series.div и Series.round последний для нового столбца используется numpy.where:

raw_data['C']= raw_data['B'] - raw_data['A']
raw_data['C']=  raw_data['C'].dt.total_seconds().div(3600).round(2)

raw_data['D']= np.where(raw_data['C']<3,'Pass',"Fail") 
print (raw_data)
                    A                   B      C     D
0 2019-06-19 09:18:00 2019-06-22 09:14:37  71.94  Fail
1 2019-06-27 22:35:00 2019-06-27 22:04:20  -0.51  Pass
2 2019-06-26 19:50:00 2019-06-26 21:18:45   1.48  Pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...