def test_get_indexer_out_of_bounds_date(self, target, positions): values = DatetimeIndex( [Timestamp("2020-01-01"), Timestamp("2020-01-02")]) result = values.get_indexer(target) expected = np.array(positions, dtype=np.intp) tm.assert_numpy_array_equal(result, expected)
def test_get_indexer_mixed_dtypes(self, target): # https://github.com/pandas-dev/pandas/issues/33741 values = DatetimeIndex( [Timestamp("2020-01-01"), Timestamp("2020-01-02")]) result = values.get_indexer(target) expected = np.array([0, 1], dtype=np.intp) tm.assert_numpy_array_equal(result, expected)
def _t2_shift(date: pd.Timestamp, index: pd.DatetimeIndex) -> pd.Timestamp: """Рассчитывает эксдивидендную дату для режима T-2 на основании даты закрытия реестра. Если дата не содержится в индексе цен, то необходимо найти предыдущую из индекса цен. После этого взять сдвинутую на 1 назад дату. Если дата находится в будущем за пределом истории котировок, то нужно сдвинуть на 1 бизнес день вперед и на два назад. Это не эквивалентно сдвигу на один день назад для выходных. """ if date <= index[-1]: position = index.get_indexer([date], "ffill", limit=1)[0] return index[position - 1] next_b_day = date + offsets.BDay() return next_b_day - 2 * offsets.BDay()