test_view.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import numpy as np
  2. import pytest
  3. from pandas import (
  4. Index,
  5. Series,
  6. array,
  7. date_range,
  8. )
  9. import pandas._testing as tm
  10. class TestView:
  11. def test_view_i8_to_datetimelike(self):
  12. dti = date_range("2000", periods=4, tz="US/Central")
  13. ser = Series(dti.asi8)
  14. result = ser.view(dti.dtype)
  15. tm.assert_datetime_array_equal(result._values, dti._data._with_freq(None))
  16. pi = dti.tz_localize(None).to_period("D")
  17. ser = Series(pi.asi8)
  18. result = ser.view(pi.dtype)
  19. tm.assert_period_array_equal(result._values, pi._data)
  20. def test_view_tz(self):
  21. # GH#24024
  22. ser = Series(date_range("2000", periods=4, tz="US/Central"))
  23. result = ser.view("i8")
  24. expected = Series(
  25. [
  26. 946706400000000000,
  27. 946792800000000000,
  28. 946879200000000000,
  29. 946965600000000000,
  30. ]
  31. )
  32. tm.assert_series_equal(result, expected)
  33. @pytest.mark.parametrize(
  34. "first", ["m8[ns]", "M8[ns]", "M8[ns, US/Central]", "period[D]"]
  35. )
  36. @pytest.mark.parametrize(
  37. "second", ["m8[ns]", "M8[ns]", "M8[ns, US/Central]", "period[D]"]
  38. )
  39. @pytest.mark.parametrize("box", [Series, Index, array])
  40. def test_view_between_datetimelike(self, first, second, box):
  41. dti = date_range("2016-01-01", periods=3)
  42. orig = box(dti)
  43. obj = orig.view(first)
  44. assert obj.dtype == first
  45. tm.assert_numpy_array_equal(np.asarray(obj.view("i8")), dti.asi8)
  46. res = obj.view(second)
  47. assert res.dtype == second
  48. tm.assert_numpy_array_equal(np.asarray(obj.view("i8")), dti.asi8)