Skip to content

BUG: apply/agg with dictlike and non-unique columns #51099

Closed
@jbrockmendel

Description

@jbrockmendel
df = pd.DataFrame(
    {"A": [None, 2, 3], "B": [1.0, np.nan, 3.0], "C": ["foo", None, "bar"]}
)
df.columns = ["A", "A", "C"]

result = df.agg({"A": "count"})  # same with 'apply' instead of 'agg'
expected = df["A"].count()
tm.assert_series_equal(result, expected)

This goes through Apply.agg_dict_like, which does

results = {
    key: obj._gotitem(key, ndim=1).agg(how) for key, how in arg.items()
}

Which operates column-by-column on the relevant columns if columns are unique. But with a repeated column obj._gotitem returns a DataFrame, so the .agg returns a DataFrame.

No existing test cases get here with non-unique columns, or with Resample/GroupBy objects whose underlying object has non-unique columns.

cc @rhshadrach

Metadata

Metadata

Assignees

Labels

ApplyApply, Aggregate, Transform, MapBug

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions