Skip to content

Commit

Permalink
BUG: fix drop_duplicates for tuple column label
Browse files Browse the repository at this point in the history
  • Loading branch information
lodagro authored and wesm committed Sep 29, 2012
1 parent 48fadc1 commit 5c47d72
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
8 changes: 7 additions & 1 deletion pandas/core/frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -2714,7 +2714,13 @@ def _m8_to_i8(x):
values = list(_m8_to_i8(self.values.T))
else:
if np.iterable(cols) and not isinstance(cols, basestring):
values = [_m8_to_i8(self[x].values) for x in cols]
if isinstance(cols, tuple):
if cols in self.columns:
values = [self[cols]]
else:
values = [_m8_to_i8(self[x].values) for x in cols]
else:
values = [_m8_to_i8(self[x].values) for x in cols]
else:
values = [self[cols]]

Expand Down
22 changes: 22 additions & 0 deletions pandas/tests/test_frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -4169,6 +4169,28 @@ def test_drop_duplicates(self):
expected = df2.drop_duplicates(['AAA', 'B'], take_last=True)
assert_frame_equal(result, expected)

def test_drop_duplicates_tuple(self):
df = DataFrame({('AA', 'AB') : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'bar', 'foo'],
'B' : ['one', 'one', 'two', 'two',
'two', 'two', 'one', 'two'],
'C' : [1, 1, 2, 2, 2, 2, 1, 2],
'D' : range(8)})

# single column
result = df.drop_duplicates(('AA', 'AB'))
expected = df[:2]
assert_frame_equal(result, expected)

result = df.drop_duplicates(('AA', 'AB'), take_last=True)
expected = df.ix[[6, 7]]
assert_frame_equal(result, expected)

# multi column
expected = df.ix[[0, 1, 2, 3]]
result = df.drop_duplicates((('AA', 'AB'), 'B'))
assert_frame_equal(result, expected)

def test_drop_duplicates_NA(self):
# none
df = DataFrame({'A' : [None, None, 'foo', 'bar',
Expand Down

0 comments on commit 5c47d72

Please sign in to comment.