Skip to content

Commit 3eca074

Browse files
committed
BUG: can pass level names to swaplevel, GH #379
1 parent 0b31dfb commit 3eca074

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

RELEASE.rst

+2
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ pandas 0.5.1
135135
- Handle min_periods=0 case in moving window functions (GH #365)
136136
- Fixed corner cases in DataFrame.apply/pivot with empty DataFrame (GH #378)
137137
- Fixed repr exception when Series name is a tuple
138+
- Always return DateRange from asfreq (GH #390)
139+
-
138140

139141
Thanks
140142
------

pandas/core/index.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from datetime import time
44
from itertools import izip
5-
import gc
65

76
import numpy as np
87

@@ -1197,6 +1196,9 @@ def swaplevel(self, i, j):
11971196
new_labels = list(self.labels)
11981197
new_names = list(self.names)
11991198

1199+
i = self._get_level_number(i)
1200+
j = self._get_level_number(j)
1201+
12001202
new_levels[i], new_levels[j] = new_levels[j], new_levels[i]
12011203
new_labels[i], new_labels[j] = new_labels[j], new_labels[i]
12021204
new_names[i], new_names[j] = new_names[j], new_names[i]

pandas/tests/test_multilevel.py

+10
Original file line numberDiff line numberDiff line change
@@ -495,10 +495,19 @@ def test_join(self):
495495

496496
def test_swaplevel(self):
497497
swapped = self.frame['A'].swaplevel(0, 1)
498+
swapped2 = self.frame['A'].swaplevel('first', 'second')
498499
self.assert_(not swapped.index.equals(self.frame.index))
500+
assert_series_equal(swapped, swapped2)
499501

500502
back = swapped.swaplevel(0, 1)
503+
back2 = swapped.swaplevel('second', 'first')
501504
self.assert_(back.index.equals(self.frame.index))
505+
assert_series_equal(back, back2)
506+
507+
ft = self.frame.T
508+
swapped = ft.swaplevel('first', 'second', axis=1)
509+
exp = self.frame.swaplevel('first', 'second').T
510+
assert_frame_equal(swapped, exp)
502511

503512
def test_swaplevel_panel(self):
504513
panel = Panel({'ItemA' : self.frame,
@@ -507,6 +516,7 @@ def test_swaplevel_panel(self):
507516
result = panel.swaplevel(0, 1, axis='major')
508517
expected = panel.copy()
509518
expected.major_axis = expected.major_axis.swaplevel(0, 1)
519+
tm.assert_panel_equal(result, expected)
510520

511521
def test_insert_index(self):
512522
df = self.ymd[:5].T

0 commit comments

Comments
 (0)