Панды находят дельту между DateTimeIndex - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь вычислить разницу между двумя наборами данных Pandas DateTimeIndex.

start_date = "2012-01-01"
end_date = "2012-12-31"

workdays = pd.bdate_range(start_date,end_date)
all_days = pd.date_range(start_date,end_date)

Я пробовал:

#Method A
weekends = np.subtract(all_days, workdays)
#ValueError: operands could not be broadcast together with shapes (366,) (262,) 

#Method B
weekends = pd.DatetimeIndex
for d in all_days:
    if d not in workdays:
        weekends.append(d)
#TypeError: append() missing 1 required positional argument: 'other'

#Method C
weekends = all_days - workdays.reindex(all_days.index, fill_value=0)
#AttributeError: 'DatetimeIndex' object has no attribute 'index'

#Method D
weekends = all_days - workdays
#ValueError: cannot add indices of unequal length

Версия Pandas == 0.23.4

Любая идея, как я могу это сделать

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Если ваша цель состоит в том, чтобы получить все даты выходных, это гораздо эффективнее и прямолинейнее:

satsun = pd.offsets.CustomBusinessDay(weekmask='Sat Sun')
offdays = pd.bdate_range(start_date, end_date, weekmask=satsun)

См. Документы на weekmask здесь: https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.busdaycalendar.html

0 голосов
/ 07 октября 2018

Я бы сделал что-то подобное, чтобы получить выходные:

import numpy as np

weekends = all_days[np.logical_not(all_days.isin(workdays))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...