Временной ряд: как я могу настроить pd.date_range (freq = 'B') с включенной субботой.(Python) - PullRequest
2 голосов
/ 13 мая 2019

Это мой пример кода:

q=pd.date_range('05/13/2019',periods=100, freq='B')

Очевидно, что в нем будет указано 100 рабочих дней с 13.05.2009 без субботы и воскресенья.Однако в некоторых странах Азии они действительно работают в субботу.Как я могу это исправить ?так что результат должен быть 100 дней с 13/05/2019 без воскресенья.

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Вы можете сделать это, используя метод .bdate_range и частоту 'C' (Custom).Затем мы передаем то, что хотим в маске недели

import pandas as pd
weekmask = 'Mon Tue Wed Thu Fri Sat'
pd.bdate_range(start="11-May-2019", periods=10, freq='C', weekmask=weekmask)

ВЫХОД:

DatetimeIndex(['2019-05-11', '2019-05-13', '2019-05-14', '2019-05-15',
               '2019-05-16', '2019-05-17', '2019-05-18', '2019-05-20',
               '2019-05-21', '2019-05-22'],
              dtype='datetime64[ns]', freq='C')

Как вы видите, это не включало 12 и 19 мая, которые были воскресеньями!:)

1 голос
/ 13 мая 2019

Попробуйте сделать два date_range с и уберите воскресенье с первого:

>>> q = pd.date_range('05/13/2019', periods=100, freq='D')
>>> q2 = pd.date_range('05/13/2019',periods=100, freq='W')
>>> q[~q.isin(q2)]
DatetimeIndex(['2019-05-13', '2019-05-14', '2019-05-15', '2019-05-16',
               '2019-05-17', '2019-05-18', '2019-05-20', '2019-05-21',
               '2019-05-22', '2019-05-23', '2019-05-24', '2019-05-25',
               '2019-05-27', '2019-05-28', '2019-05-29', '2019-05-30',
               '2019-05-31', '2019-06-01', '2019-06-03', '2019-06-04',
               '2019-06-05', '2019-06-06', '2019-06-07', '2019-06-08',
               '2019-06-10', '2019-06-11', '2019-06-12', '2019-06-13',
               '2019-06-14', '2019-06-15', '2019-06-17', '2019-06-18',
               '2019-06-19', '2019-06-20', '2019-06-21', '2019-06-22',
               '2019-06-24', '2019-06-25', '2019-06-26', '2019-06-27',
               '2019-06-28', '2019-06-29', '2019-07-01', '2019-07-02',
               '2019-07-03', '2019-07-04', '2019-07-05', '2019-07-06',
               '2019-07-08', '2019-07-09', '2019-07-10', '2019-07-11',
               '2019-07-12', '2019-07-13', '2019-07-15', '2019-07-16',
               '2019-07-17', '2019-07-18', '2019-07-19', '2019-07-20',
               '2019-07-22', '2019-07-23', '2019-07-24', '2019-07-25',
               '2019-07-26', '2019-07-27', '2019-07-29', '2019-07-30',
               '2019-07-31', '2019-08-01', '2019-08-02', '2019-08-03',
               '2019-08-05', '2019-08-06', '2019-08-07', '2019-08-08',
               '2019-08-09', '2019-08-10', '2019-08-12', '2019-08-13',
               '2019-08-14', '2019-08-15', '2019-08-16', '2019-08-17',
               '2019-08-19', '2019-08-20'],
              dtype='datetime64[ns]', freq=None)
...