Вычитание даты и времени UT C и даты и времени не UTC - PullRequest
0 голосов
/ 14 февраля 2020

Из моего кадра данных я пытаюсь вычесть один столбец datetime64[ns, UTC] против datetime64[ns]. Я считаю, что я должен нормализовать один из столбцов и затем вычесть (должен добавить UT C к столбцу datetime64[ns] или вычесть UT C к datetime64[ns, UTC], чтобы потом я мог их вычесть).

df
estimated_delivery_time_local                  time_check
          2020-01-22 23:48:52   2020-01-22 23:48:52+00:00
          2020-01-23 00:45:05   2020-01-23 00:45:05+00:00
          2020-01-23 03:31:38   2020-01-23 03:31:38+00:00
          2020-01-23 00:19:06   2020-01-23 00:19:06+00:00

Я хочу вычесть оба этих столбца, чтобы проверить, все ли значения равны нулю

Ответы [ 2 ]

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

Я не знаю, соответствует ли мой ответ вашему вопросу, но при условии, что ваши входные данные представлены в строковом формате, например:

df=pd.DataFrame({'estimated_delivery_time_local':['2020-01-22 23:48:52','2020-01-23 00:45:05','2020-01-23 03:31:38','2020-01-23 00:19:06'],'time_check':['2020-01-22 23:48:52+00:00','2020-01-23 00:45:05+00:00','2020-01-23 03:31:38+00:00','2020-01-23 00:19:06+00:00']})

, тогда, если вы сделаете два столбца с нормализованным форматом даты и времени, например:

import datetime from datetime

df['time_check']=[datetime.strptime(x,'%Y-%m-%d %H:%M:%S+00:00') for x in  df['time_check']]

df['estimated_delivery_time_local']=[datetime.strptime(x,'%Y-%m-%d %H:%M:%S') for x in df['estimated_delivery_time_local']]

в этом случае вы должны сравнить два столбца или две метки времени и проверить, совпадают ли они

df['estimated_delivery_time_local']-df['time_check']
0 голосов
/ 14 февраля 2020

Сначала вы можете удалить локальную метку времени с помощью:

df['time_check'] = df['time_check'].dt.tz_localize(None)

После этого вы можете выполнить команду np.where(), чтобы сравнить, равны ли строки для столбцов или нет.

df['quality_check'] = np.where(df['estimated_delivery_time_local'] == df['time_check'],0,1)

Это вернет 1 для строк, которые не совпадают, и 0 для тех, которые соответствуют. Вы можете очень быстро отфильтровать строки, которые не соответствуют, или выполнить df['quality_check'].sum(), чтобы узнать количество строк, которые не соответствуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...