Skip to content

Groupby with matching column and index name emits spurious warning #17383

Closed
@TomAugspurger

Description

@TomAugspurger

xref #14432

Which of these should raise FutureWarnings? I think the idea was to use pd.Grouper(name) to disambiguate? In that case In [21] should not raise a warning?

In [17]: df = pd.DataFrame({"A": [1] * 5 + [2] * 5, "B": ['a', 'b'] * 5, 'C': range(10)}, index=pd.Index(range(10), name='A'))

In [19]: _ = df.groupby('A').mean()
/Users/taugspurger/.virtualenvs/pandas-dev/bin/ipython:1: FutureWarning: 'A' is both a column name and an index level.
Defaulting to column but this will raise an ambiguity error in a future version
  #!/Users/taugspurger/Envs/pandas-dev/bin/python3.6

In [20]: _ = df.groupby(['A']).mean()
/Users/taugspurger/.virtualenvs/pandas-dev/bin/ipython:1: FutureWarning: 'A' is both a column name and an index level.
Defaulting to column but this will raise an ambiguity error in a future version
  #!/Users/taugspurger/Envs/pandas-dev/bin/python3.6

In [21]: _ = df.groupby(pd.Grouper('A')).mean()
/Users/taugspurger/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/groupby.py:1699: FutureWarning: 'A' is both a column name and an index level.
Defaulting to column but this will raise an ambiguity error in a future version
  return klass(obj, by, **kwds)

In [22]: _ = df.groupby([pd.Grouper('A')]).mean()

cc @jmmease

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions