Skip to content

Commit 077d3da

Browse files
committed
BUG: Attributes are lost when subsetting columns
1 parent d1b1faa commit 077d3da

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

pandas/core/groupby/generic.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1662,11 +1662,18 @@ def _gotitem(self, key, ndim: int, subset=None):
16621662
return DataFrameGroupBy(
16631663
subset,
16641664
self.grouper,
1665-
selection=key,
1665+
axis=self.axis,
1666+
level=self.level,
16661667
grouper=self.grouper,
16671668
exclusions=self.exclusions,
1669+
selection=key,
16681670
as_index=self.as_index,
1671+
sort=self.sort,
1672+
group_keys=self.group_keys,
1673+
squeeze=self.squeeze,
16691674
observed=self.observed,
1675+
mutated=self.mutated,
1676+
dropna=self.dropna,
16701677
)
16711678
elif ndim == 1:
16721679
if subset is None:

pandas/tests/groupby/test_groupby.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2055,3 +2055,27 @@ def test_groups_repr_truncates(max_seq_items, expected):
20552055

20562056
result = df.groupby(np.array(df.a)).groups.__repr__()
20572057
assert result == expected
2058+
2059+
2060+
@pytest.mark.parametrize(
2061+
"attr, value",
2062+
[
2063+
("axis", 1),
2064+
("level", "a"),
2065+
("as_index", False),
2066+
("sort", False),
2067+
("group_keys", False),
2068+
("squeeze", True),
2069+
("observed", True),
2070+
("dropna", False),
2071+
],
2072+
)
2073+
def test_subsetting_columns_keeps_attrs(attr, value):
2074+
# GH 9959 - When subsetting columns, don't drop attributes
2075+
df = pd.DataFrame({"a": [1], "b": [2], "c": [3]})
2076+
if attr != "axis":
2077+
df = df.set_index("a")
2078+
expected = df.groupby("a", **{attr: value})
2079+
2080+
result = expected[["b"]]
2081+
assert getattr(result, attr) == getattr(expected, attr)

0 commit comments

Comments
 (0)