def test_take_misc(self): index = PeriodIndex(start='1/1/10', end='12/31/12', freq='D', name='idx') expected = PeriodIndex([datetime(2010, 1, 6), datetime(2010, 1, 7), datetime(2010, 1, 9), datetime(2010, 1, 13)], freq='D', name='idx') taken1 = index.take([5, 6, 8, 12]) taken2 = index[[5, 6, 8, 12]] for taken in [taken1, taken2]: tm.assert_index_equal(taken, expected) assert isinstance(taken, PeriodIndex) assert taken.freq == index.freq assert taken.name == expected.name
def test_take_fill_value(self): # GH#12631 idx = PeriodIndex(["2011-01-01", "2011-02-01", "2011-03-01"], name="xxx", freq="D") result = idx.take(np.array([1, 0, -1])) expected = PeriodIndex(["2011-02-01", "2011-01-01", "2011-03-01"], name="xxx", freq="D") tm.assert_index_equal(result, expected) # fill_value result = idx.take(np.array([1, 0, -1]), fill_value=True) expected = PeriodIndex(["2011-02-01", "2011-01-01", "NaT"], name="xxx", freq="D") tm.assert_index_equal(result, expected) # allow_fill=False result = idx.take(np.array([1, 0, -1]), allow_fill=False, fill_value=True) expected = PeriodIndex(["2011-02-01", "2011-01-01", "2011-03-01"], name="xxx", freq="D") tm.assert_index_equal(result, expected) msg = ("When allow_fill=True and fill_value is not None, " "all indices must be >= -1") with pytest.raises(ValueError, match=msg): idx.take(np.array([1, 0, -2]), fill_value=True) with pytest.raises(ValueError, match=msg): idx.take(np.array([1, 0, -5]), fill_value=True) msg = "index -5 is out of bounds for( axis 0 with)? size 3" with pytest.raises(IndexError, match=msg): idx.take(np.array([1, -5]))