test_formats.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import pytest
  2. import pandas as pd
  3. from pandas import (
  4. Series,
  5. TimedeltaIndex,
  6. )
  7. class TestTimedeltaIndexRendering:
  8. @pytest.mark.parametrize("method", ["__repr__", "__str__"])
  9. def test_representation(self, method):
  10. idx1 = TimedeltaIndex([], freq="D")
  11. idx2 = TimedeltaIndex(["1 days"], freq="D")
  12. idx3 = TimedeltaIndex(["1 days", "2 days"], freq="D")
  13. idx4 = TimedeltaIndex(["1 days", "2 days", "3 days"], freq="D")
  14. idx5 = TimedeltaIndex(["1 days 00:00:01", "2 days", "3 days"])
  15. exp1 = "TimedeltaIndex([], dtype='timedelta64[ns]', freq='D')"
  16. exp2 = "TimedeltaIndex(['1 days'], dtype='timedelta64[ns]', freq='D')"
  17. exp3 = "TimedeltaIndex(['1 days', '2 days'], dtype='timedelta64[ns]', freq='D')"
  18. exp4 = (
  19. "TimedeltaIndex(['1 days', '2 days', '3 days'], "
  20. "dtype='timedelta64[ns]', freq='D')"
  21. )
  22. exp5 = (
  23. "TimedeltaIndex(['1 days 00:00:01', '2 days 00:00:00', "
  24. "'3 days 00:00:00'], dtype='timedelta64[ns]', freq=None)"
  25. )
  26. with pd.option_context("display.width", 300):
  27. for idx, expected in zip(
  28. [idx1, idx2, idx3, idx4, idx5], [exp1, exp2, exp3, exp4, exp5]
  29. ):
  30. result = getattr(idx, method)()
  31. assert result == expected
  32. def test_representation_to_series(self):
  33. idx1 = TimedeltaIndex([], freq="D")
  34. idx2 = TimedeltaIndex(["1 days"], freq="D")
  35. idx3 = TimedeltaIndex(["1 days", "2 days"], freq="D")
  36. idx4 = TimedeltaIndex(["1 days", "2 days", "3 days"], freq="D")
  37. idx5 = TimedeltaIndex(["1 days 00:00:01", "2 days", "3 days"])
  38. exp1 = """Series([], dtype: timedelta64[ns])"""
  39. exp2 = "0 1 days\ndtype: timedelta64[ns]"
  40. exp3 = "0 1 days\n1 2 days\ndtype: timedelta64[ns]"
  41. exp4 = "0 1 days\n1 2 days\n2 3 days\ndtype: timedelta64[ns]"
  42. exp5 = (
  43. "0 1 days 00:00:01\n"
  44. "1 2 days 00:00:00\n"
  45. "2 3 days 00:00:00\n"
  46. "dtype: timedelta64[ns]"
  47. )
  48. with pd.option_context("display.width", 300):
  49. for idx, expected in zip(
  50. [idx1, idx2, idx3, idx4, idx5], [exp1, exp2, exp3, exp4, exp5]
  51. ):
  52. result = repr(Series(idx))
  53. assert result == expected
  54. def test_summary(self):
  55. # GH#9116
  56. idx1 = TimedeltaIndex([], freq="D")
  57. idx2 = TimedeltaIndex(["1 days"], freq="D")
  58. idx3 = TimedeltaIndex(["1 days", "2 days"], freq="D")
  59. idx4 = TimedeltaIndex(["1 days", "2 days", "3 days"], freq="D")
  60. idx5 = TimedeltaIndex(["1 days 00:00:01", "2 days", "3 days"])
  61. exp1 = "TimedeltaIndex: 0 entries\nFreq: D"
  62. exp2 = "TimedeltaIndex: 1 entries, 1 days to 1 days\nFreq: D"
  63. exp3 = "TimedeltaIndex: 2 entries, 1 days to 2 days\nFreq: D"
  64. exp4 = "TimedeltaIndex: 3 entries, 1 days to 3 days\nFreq: D"
  65. exp5 = "TimedeltaIndex: 3 entries, 1 days 00:00:01 to 3 days 00:00:00"
  66. for idx, expected in zip(
  67. [idx1, idx2, idx3, idx4, idx5], [exp1, exp2, exp3, exp4, exp5]
  68. ):
  69. result = idx._summary()
  70. assert result == expected