def test_insert_mismatched_types_raises(self, item): # GH#33703 dont cast these to td64 tdi = TimedeltaIndex(["4day", "1day", "2day"], name="idx") msg = "incompatible label" with pytest.raises(TypeError, match=msg): tdi.insert(1, item)
def test_insert_mismatched_types_raises(self, item): # GH#33703 dont cast these to td64 tdi = TimedeltaIndex(["4day", "1day", "2day"], name="idx") msg = r"value should be a 'Timedelta' or 'NaT'\. Got '.*' instead\." with pytest.raises(TypeError, match=msg): tdi.insert(1, item)
def test_insert(self): idx = TimedeltaIndex(["4day", "1day", "2day"], name="idx") result = idx.insert(2, timedelta(days=5)) exp = TimedeltaIndex(["4day", "1day", "5day", "2day"], name="idx") tm.assert_index_equal(result, exp) # insertion of non-datetime should coerce to object index result = idx.insert(1, "inserted") expected = Index( [Timedelta("4day"), "inserted", Timedelta("1day"), Timedelta("2day")], name="idx", ) assert not isinstance(result, TimedeltaIndex) tm.assert_index_equal(result, expected) assert result.name == expected.name idx = timedelta_range("1day 00:00:01", periods=3, freq="s", name="idx") # preserve freq expected_0 = TimedeltaIndex( ["1day", "1day 00:00:01", "1day 00:00:02", "1day 00:00:03"], name="idx", freq="s", ) expected_3 = TimedeltaIndex( ["1day 00:00:01", "1day 00:00:02", "1day 00:00:03", "1day 00:00:04"], name="idx", freq="s", ) # reset freq to None expected_1_nofreq = TimedeltaIndex( ["1day 00:00:01", "1day 00:00:01", "1day 00:00:02", "1day 00:00:03"], name="idx", freq=None, ) expected_3_nofreq = TimedeltaIndex( ["1day 00:00:01", "1day 00:00:02", "1day 00:00:03", "1day 00:00:05"], name="idx", freq=None, ) cases = [ (0, Timedelta("1day"), expected_0), (-3, Timedelta("1day"), expected_0), (3, Timedelta("1day 00:00:04"), expected_3), (1, Timedelta("1day 00:00:01"), expected_1_nofreq), (3, Timedelta("1day 00:00:05"), expected_3_nofreq), ] for n, d, expected in cases: result = idx.insert(n, d) tm.assert_index_equal(result, expected) assert result.name == expected.name assert result.freq == expected.freq
def test_insert(self): idx = TimedeltaIndex(['4day', '1day', '2day'], name='idx') result = idx.insert(2, timedelta(days=5)) exp = TimedeltaIndex(['4day', '1day', '5day', '2day'], name='idx') self.assertTrue(result.equals(exp)) # insertion of non-datetime should coerce to object index result = idx.insert(1, 'inserted') expected = Index([ Timedelta('4day'), 'inserted', Timedelta('1day'), Timedelta('2day') ], name='idx') self.assertNotIsInstance(result, TimedeltaIndex) tm.assert_index_equal(result, expected) self.assertEqual(result.name, expected.name) idx = timedelta_range('1day 00:00:01', periods=3, freq='s', name='idx') # preserve freq expected_0 = TimedeltaIndex( ['1day', '1day 00:00:01', '1day 00:00:02', '1day 00:00:03'], name='idx', freq='s') expected_3 = TimedeltaIndex([ '1day 00:00:01', '1day 00:00:02', '1day 00:00:03', '1day 00:00:04' ], name='idx', freq='s') # reset freq to None expected_1_nofreq = TimedeltaIndex([ '1day 00:00:01', '1day 00:00:01', '1day 00:00:02', '1day 00:00:03' ], name='idx', freq=None) expected_3_nofreq = TimedeltaIndex([ '1day 00:00:01', '1day 00:00:02', '1day 00:00:03', '1day 00:00:05' ], name='idx', freq=None) cases = [(0, Timedelta('1day'), expected_0), (-3, Timedelta('1day'), expected_0), (3, Timedelta('1day 00:00:04'), expected_3), (1, Timedelta('1day 00:00:01'), expected_1_nofreq), (3, Timedelta('1day 00:00:05'), expected_3_nofreq)] for n, d, expected in cases: result = idx.insert(n, d) self.assertTrue(result.equals(expected)) self.assertEqual(result.name, expected.name) self.assertEqual(result.freq, expected.freq)
def test_insert_invalid_na(self): idx = TimedeltaIndex(["4day", "1day", "2day"], name="idx") item = np.datetime64("NaT") result = idx.insert(0, item) expected = Index([item] + list(idx), dtype=object, name="idx") tm.assert_index_equal(result, expected) # Also works if we pass a different dt64nat object item2 = np.datetime64("NaT") result = idx.insert(0, item2) tm.assert_index_equal(result, expected)
def test_insert(self): idx = TimedeltaIndex(['4day', '1day', '2day'], name='idx') result = idx.insert(2, timedelta(days=5)) exp = TimedeltaIndex(['4day', '1day', '5day', '2day'], name='idx') tm.assert_index_equal(result, exp) # insertion of non-datetime should coerce to object index result = idx.insert(1, 'inserted') expected = Index([Timedelta('4day'), 'inserted', Timedelta('1day'), Timedelta('2day')], name='idx') assert not isinstance(result, TimedeltaIndex) tm.assert_index_equal(result, expected) assert result.name == expected.name idx = timedelta_range('1day 00:00:01', periods=3, freq='s', name='idx') # preserve freq expected_0 = TimedeltaIndex(['1day', '1day 00:00:01', '1day 00:00:02', '1day 00:00:03'], name='idx', freq='s') expected_3 = TimedeltaIndex(['1day 00:00:01', '1day 00:00:02', '1day 00:00:03', '1day 00:00:04'], name='idx', freq='s') # reset freq to None expected_1_nofreq = TimedeltaIndex(['1day 00:00:01', '1day 00:00:01', '1day 00:00:02', '1day 00:00:03'], name='idx', freq=None) expected_3_nofreq = TimedeltaIndex(['1day 00:00:01', '1day 00:00:02', '1day 00:00:03', '1day 00:00:05'], name='idx', freq=None) cases = [(0, Timedelta('1day'), expected_0), (-3, Timedelta('1day'), expected_0), (3, Timedelta('1day 00:00:04'), expected_3), (1, Timedelta('1day 00:00:01'), expected_1_nofreq), (3, Timedelta('1day 00:00:05'), expected_3_nofreq)] for n, d, expected in cases: result = idx.insert(n, d) tm.assert_index_equal(result, expected) assert result.name == expected.name assert result.freq == expected.freq # GH 18295 (test missing) expected = TimedeltaIndex(['1day', pd.NaT, '2day', '3day']) for na in (np.nan, pd.NaT, None): result = timedelta_range('1day', '3day').insert(1, na) tm.assert_index_equal(result, expected)
def test_insert(self): idx = TimedeltaIndex(['4day', '1day', '2day'], name='idx') result = idx.insert(2, timedelta(days=5)) exp = TimedeltaIndex(['4day', '1day', '5day', '2day'], name='idx') self.assert_index_equal(result, exp) # insertion of non-datetime should coerce to object index result = idx.insert(1, 'inserted') expected = Index([Timedelta('4day'), 'inserted', Timedelta('1day'), Timedelta('2day')], name='idx') self.assertNotIsInstance(result, TimedeltaIndex) tm.assert_index_equal(result, expected) self.assertEqual(result.name, expected.name) idx = timedelta_range('1day 00:00:01', periods=3, freq='s', name='idx') # preserve freq expected_0 = TimedeltaIndex(['1day', '1day 00:00:01', '1day 00:00:02', '1day 00:00:03'], name='idx', freq='s') expected_3 = TimedeltaIndex(['1day 00:00:01', '1day 00:00:02', '1day 00:00:03', '1day 00:00:04'], name='idx', freq='s') # reset freq to None expected_1_nofreq = TimedeltaIndex(['1day 00:00:01', '1day 00:00:01', '1day 00:00:02', '1day 00:00:03'], name='idx', freq=None) expected_3_nofreq = TimedeltaIndex(['1day 00:00:01', '1day 00:00:02', '1day 00:00:03', '1day 00:00:05'], name='idx', freq=None) cases = [(0, Timedelta('1day'), expected_0), (-3, Timedelta('1day'), expected_0), (3, Timedelta('1day 00:00:04'), expected_3), (1, Timedelta('1day 00:00:01'), expected_1_nofreq), (3, Timedelta('1day 00:00:05'), expected_3_nofreq)] for n, d, expected in cases: result = idx.insert(n, d) self.assert_index_equal(result, expected) self.assertEqual(result.name, expected.name) self.assertEqual(result.freq, expected.freq)
def test_insert(self): idx = TimedeltaIndex(["4day", "1day", "2day"], name="idx") result = idx.insert(2, timedelta(days=5)) exp = TimedeltaIndex(["4day", "1day", "5day", "2day"], name="idx") self.assertTrue(result.equals(exp)) # insertion of non-datetime should coerce to object index result = idx.insert(1, "inserted") expected = Index([Timedelta("4day"), "inserted", Timedelta("1day"), Timedelta("2day")], name="idx") self.assertNotIsInstance(result, TimedeltaIndex) tm.assert_index_equal(result, expected) self.assertEqual(result.name, expected.name) idx = timedelta_range("1day 00:00:01", periods=3, freq="s", name="idx") # preserve freq expected_0 = TimedeltaIndex(["1day", "1day 00:00:01", "1day 00:00:02", "1day 00:00:03"], name="idx", freq="s") expected_3 = TimedeltaIndex( ["1day 00:00:01", "1day 00:00:02", "1day 00:00:03", "1day 00:00:04"], name="idx", freq="s" ) # reset freq to None expected_1_nofreq = TimedeltaIndex( ["1day 00:00:01", "1day 00:00:01", "1day 00:00:02", "1day 00:00:03"], name="idx", freq=None ) expected_3_nofreq = TimedeltaIndex( ["1day 00:00:01", "1day 00:00:02", "1day 00:00:03", "1day 00:00:05"], name="idx", freq=None ) cases = [ (0, Timedelta("1day"), expected_0), (-3, Timedelta("1day"), expected_0), (3, Timedelta("1day 00:00:04"), expected_3), (1, Timedelta("1day 00:00:01"), expected_1_nofreq), (3, Timedelta("1day 00:00:05"), expected_3_nofreq), ] for n, d, expected in cases: result = idx.insert(n, d) self.assertTrue(result.equals(expected)) self.assertEqual(result.name, expected.name) self.assertEqual(result.freq, expected.freq)
def test_insert_invalid_na(self): idx = TimedeltaIndex(["4day", "1day", "2day"], name="idx") # FIXME: assert_index_equal fails if we pass a different # instance of np.datetime64("NaT") item = np.datetime64("NaT") result = idx.insert(0, item) expected = Index([item] + list(idx), dtype=object, name="idx") tm.assert_index_equal(result, expected)
def test_insert_mismatched_types_raises(self, item): # GH#33703 dont cast these to td64 tdi = TimedeltaIndex(["4day", "1day", "2day"], name="idx") result = tdi.insert(1, item) expected = Index( [tdi[0], lib.item_from_zerodim(item)] + list(tdi[1:]), dtype=object, name="idx", ) tm.assert_index_equal(result, expected)
def test_insert_invalid_na(self): idx = TimedeltaIndex(["4day", "1day", "2day"], name="idx") with pytest.raises(TypeError, match="incompatible label"): idx.insert(0, np.datetime64("NaT"))
def test_insert_invalid_na(self): idx = TimedeltaIndex(["4day", "1day", "2day"], name="idx") msg = r"value should be a 'Timedelta' or 'NaT'\. Got 'datetime64' instead\." with pytest.raises(TypeError, match=msg): idx.insert(0, np.datetime64("NaT"))