test_swaplevel.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import pytest
  2. from pandas import DataFrame
  3. import pandas._testing as tm
  4. class TestSwaplevel:
  5. def test_swaplevel(self, multiindex_dataframe_random_data):
  6. frame = multiindex_dataframe_random_data
  7. swapped = frame["A"].swaplevel()
  8. swapped2 = frame["A"].swaplevel(0)
  9. swapped3 = frame["A"].swaplevel(0, 1)
  10. swapped4 = frame["A"].swaplevel("first", "second")
  11. assert not swapped.index.equals(frame.index)
  12. tm.assert_series_equal(swapped, swapped2)
  13. tm.assert_series_equal(swapped, swapped3)
  14. tm.assert_series_equal(swapped, swapped4)
  15. back = swapped.swaplevel()
  16. back2 = swapped.swaplevel(0)
  17. back3 = swapped.swaplevel(0, 1)
  18. back4 = swapped.swaplevel("second", "first")
  19. assert back.index.equals(frame.index)
  20. tm.assert_series_equal(back, back2)
  21. tm.assert_series_equal(back, back3)
  22. tm.assert_series_equal(back, back4)
  23. ft = frame.T
  24. swapped = ft.swaplevel("first", "second", axis=1)
  25. exp = frame.swaplevel("first", "second").T
  26. tm.assert_frame_equal(swapped, exp)
  27. msg = "Can only swap levels on a hierarchical axis."
  28. with pytest.raises(TypeError, match=msg):
  29. DataFrame(range(3)).swaplevel()