Skip to content

Commit 75c820c

Browse files
committed
Fix rest of pandas-dev#29764
1 parent 9ad6363 commit 75c820c

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

pandas/core/groupby/generic.py

+1
Original file line numberDiff line numberDiff line change
@@ -1694,6 +1694,7 @@ def _wrap_transformed_output(
16941694
"""
16951695
indexed_output = {key.position: val for key, val in output.items()}
16961696
columns = Index(key.label for key in output)
1697+
columns.name = self.obj.columns.name
16971698

16981699
result = self.obj._constructor(indexed_output)
16991700
result.columns = columns

pandas/tests/groupby/test_groupby.py

+23
Original file line numberDiff line numberDiff line change
@@ -2111,3 +2111,26 @@ def test_subsetting_columns_keeps_attrs(klass, attr, value):
21112111
expected = df.groupby("a", **{attr: value})
21122112
result = expected[["b"]] if klass is DataFrame else expected["b"]
21132113
assert getattr(result, attr) == getattr(expected, attr)
2114+
2115+
2116+
@pytest.mark.parametrize("func", ["sum", "any", "shift"])
2117+
def test_groupby_column_index_name_lost(func):
2118+
# GH: 29764 groupby loses index sometimes
2119+
expected = pd.Index(["a"], name="idx")
2120+
df = pd.DataFrame([[1]], columns=expected)
2121+
df_grouped = df.groupby([1])
2122+
result = getattr(df_grouped, func)().columns
2123+
tm.assert_index_equal(result, expected)
2124+
2125+
2126+
@pytest.mark.parametrize("func", ["ffill", "bfill"])
2127+
def test_groupby_column_index_name_lost_fill_funcs(func):
2128+
# GH: 29764 groupby loses index sometimes
2129+
df = pd.DataFrame(
2130+
[[1, 1.0, -1.0], [1, np.nan, np.nan], [1, 2.0, -2.0]],
2131+
columns=pd.Index(["type", "a", "b"], name="idx"),
2132+
)
2133+
df_grouped = df.groupby(["type"])[["a", "b"]]
2134+
result = getattr(df_grouped, func)().columns
2135+
expected = pd.Index(["a", "b"], name="idx")
2136+
tm.assert_index_equal(result, expected)

0 commit comments

Comments
 (0)