np.busday_count из столбцов отметок времени панд - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь вернуть серию Pandas, содержащую разницу в количестве рабочих дней между двумя столбцами данных, содержащими даты: «Дата доставки» и «Дата получения».

Я могу сказать из df.dtypes, чтомои два столбца дат - datetime64 [нс]. Из того, что я видел, самый простой способ узнать количество рабочих дней между ними - это numpy.busday_count.

ID          Pickup Date Delivery Date
1004817295  2019-08-30  2019-09-02
1004833653  2019-08-30  NaT
1004852236  2019-08-30  2019-09-02
1012884202  2019-10-21  2019-10-22
1037931016  2019-08-19  2019-08-22


df.dropna(axis=0,subset=['Delivery Date']).apply(lambda x: np.busday_count(x['Pickup Date'].values.astype('datetime64[D]'),x['Delivery Date'].values.astype('datetime64[D]'),axis=1))


Я получил следующую ошибку

KeyError: ('Дата получения',' произошло при дате получения индекса ')

, что заставляет меня думать, что я что-то упустил с моими осями. Что мне не хватает? Это даже самый эффективный подход?

Спасибо!

1 Ответ

1 голос
/ 28 октября 2019

Я думаю, что пропущенное значение может давать ошибку

numbusdays = []
for a,b in zip(list(df['Pickup Date']),list(df['Delivery Date'])):
    if str(a) != 'NaT' and str(b) != 'NaT':
        numbusdays.append(np.busday_count(a,b))
    else:
        numbusdays.append(np.nan)

df['numbusdays'] = numbusdays
print(df)
           ID  Pickup Date Delivery Date  numbusdays
0  1004817295  2019-08-30   2019-09-02         1.0
1  1004833653  2019-08-30          NaT         NaN
2  1004852236  2019-08-30   2019-09-02         1.0
3  1012884202  2019-10-21   2019-10-22         1.0
4  1037931016  2019-08-19   2019-08-22         3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...