Skip to content

Commit 0dd860b

Browse files
committed
BUG: fix single-key groupby with as_index=False, address GH #160
1 parent 86b4ea6 commit 0dd860b

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

pandas/core/groupby.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -923,8 +923,12 @@ def _wrap_aggregated_output(self, output, mask):
923923
result = DataFrame(output, index=index, columns=output_keys)
924924
else:
925925
name_list = self._get_names()
926-
result = DataFrame(output, index=name_list[0][1],
927-
columns=output_keys)
926+
name, labels = name_list[0]
927+
if not self.as_index:
928+
result = DataFrame(output, columns=output_keys)
929+
result.insert(0, name, labels)
930+
else:
931+
result = DataFrame(output, index=labels, columns=output_keys)
928932

929933
if self.axis == 1:
930934
result = result.T

pandas/tests/test_groupby.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -519,12 +519,15 @@ def _check_op(op):
519519
def test_groupby_as_index(self):
520520
data = self.df
521521

522-
grouped = data.groupby(['A'], as_index=False)
522+
# single-key
523+
grouped = data.groupby('A', as_index=False)
523524
result = grouped.mean()
524525
expected = data.groupby(['A']).mean()
525526
expected.insert(0, 'A', expected.index)
526527
expected.index = np.arange(len(expected))
528+
assert_frame_equal(result, expected)
527529

530+
# multi-key
528531
grouped = data.groupby(['A', 'B'], as_index=False)
529532
result = grouped.mean()
530533
expected = data.groupby(['A', 'B']).mean()
@@ -533,6 +536,7 @@ def test_groupby_as_index(self):
533536
expected.insert(0, 'A', arrays[0])
534537
expected.insert(1, 'B', arrays[1])
535538
expected.index = np.arange(len(expected))
539+
assert_frame_equal(result, expected)
536540

537541
def test_groupby_multiple_key(self):
538542
df = tm.makeTimeDataFrame()

0 commit comments

Comments
 (0)