test_repeat.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import numpy as np
  2. import pytest
  3. from pandas import (
  4. DatetimeIndex,
  5. Timestamp,
  6. date_range,
  7. )
  8. import pandas._testing as tm
  9. class TestRepeat:
  10. def test_repeat_range(self, tz_naive_fixture):
  11. tz = tz_naive_fixture
  12. rng = date_range("1/1/2000", "1/1/2001")
  13. result = rng.repeat(5)
  14. assert result.freq is None
  15. assert len(result) == 5 * len(rng)
  16. index = date_range("2001-01-01", periods=2, freq="D", tz=tz)
  17. exp = DatetimeIndex(
  18. ["2001-01-01", "2001-01-01", "2001-01-02", "2001-01-02"], tz=tz
  19. )
  20. for res in [index.repeat(2), np.repeat(index, 2)]:
  21. tm.assert_index_equal(res, exp)
  22. assert res.freq is None
  23. index = date_range("2001-01-01", periods=2, freq="2D", tz=tz)
  24. exp = DatetimeIndex(
  25. ["2001-01-01", "2001-01-01", "2001-01-03", "2001-01-03"], tz=tz
  26. )
  27. for res in [index.repeat(2), np.repeat(index, 2)]:
  28. tm.assert_index_equal(res, exp)
  29. assert res.freq is None
  30. index = DatetimeIndex(["2001-01-01", "NaT", "2003-01-01"], tz=tz)
  31. exp = DatetimeIndex(
  32. [
  33. "2001-01-01",
  34. "2001-01-01",
  35. "2001-01-01",
  36. "NaT",
  37. "NaT",
  38. "NaT",
  39. "2003-01-01",
  40. "2003-01-01",
  41. "2003-01-01",
  42. ],
  43. tz=tz,
  44. )
  45. for res in [index.repeat(3), np.repeat(index, 3)]:
  46. tm.assert_index_equal(res, exp)
  47. assert res.freq is None
  48. def test_repeat(self, tz_naive_fixture):
  49. tz = tz_naive_fixture
  50. reps = 2
  51. msg = "the 'axis' parameter is not supported"
  52. rng = date_range(start="2016-01-01", periods=2, freq="30Min", tz=tz)
  53. expected_rng = DatetimeIndex(
  54. [
  55. Timestamp("2016-01-01 00:00:00", tz=tz),
  56. Timestamp("2016-01-01 00:00:00", tz=tz),
  57. Timestamp("2016-01-01 00:30:00", tz=tz),
  58. Timestamp("2016-01-01 00:30:00", tz=tz),
  59. ]
  60. )
  61. res = rng.repeat(reps)
  62. tm.assert_index_equal(res, expected_rng)
  63. assert res.freq is None
  64. tm.assert_index_equal(np.repeat(rng, reps), expected_rng)
  65. with pytest.raises(ValueError, match=msg):
  66. np.repeat(rng, reps, axis=1)