Description
Pandas version checks
-
I have checked that this issue has not already been reported.
-
I have confirmed this bug exists on the latest version of pandas.
-
I have confirmed this bug exists on the main branch of pandas.
Reproducible Example
import pandas
df = pandas.DataFrame(
[[1, 2, 3], [4, 5, 6]],
columns=pandas.MultiIndex.from_tuples([("a", 0), ("b", 0), ("b", 1)]),
)
res = df.groupby(by=[1, 2]).agg({("a", 0): "sum"}) # works fine
print(res)
df.columns = pandas.MultiIndex.from_tuples([("a", 0), ("b", 0), ("b", 0)])
res = df.groupby(by=[1, 2]).agg(
{("a", 0): "sum"}
) # AttributeError: 'Series' object has no attribute 'columns'
print(res)
Issue Description
Reproducer's traceback
Traceback (most recent call last):
File "t2.py", line 12, in <module>
res = df.groupby(by=[1, 2]).agg({("a", 0): "sum"}) # AttributeError: 'Series' object has no attribute 'columns'
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/groupby/generic.py", line 894, in aggregate
result = op.agg()
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/apply.py", line 169, in agg
return self.agg_dict_like()
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/apply.py", line 486, in agg_dict_like
results = {
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/apply.py", line 487, in <dictcomp>
key: obj._gotitem(key, ndim=1).agg(how) for key, how in arg.items()
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/groupby/generic.py", line 275, in aggregate
return getattr(self, func)(*args, **kwargs)
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/groupby/groupby.py", line 2425, in sum
result = self._agg_general(
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/groupby/groupby.py", line 1683, in _agg_general
result = self._cython_agg_general(
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/groupby/groupby.py", line 1743, in _cython_agg_general
numeric_only_bool = self._resolve_numeric_only(how, numeric_only, axis=0)
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/groupby/groupby.py", line 1347, in _resolve_numeric_only
if len(obj.columns) and not len(check.columns) and not obj.empty:
File "/localdisk/dchigare/miniconda3/envs/modin/lib/python3.8/site-packages/pandas/core/generic.py", line 5902, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'columns'
Expected Behavior
Groupby on a frame with duplicated non-MultiIndex values works fine, I would expect the MultiIndex case to work the same.
import pandas
df = pandas.DataFrame(
[[1, 2, 3], [4, 5, 6]],
columns=pandas.Index(["a", "b", "b"]),
)
res = df.groupby(by=[1, 2]).agg({"a": "sum"}) # works fine
print(res)
Installed Versions
INSTALLED VERSIONS
commit : 8dab54d
python : 3.8.13.final.0
python-bits : 64
OS : Linux
OS-release : 5.4.0-124-generic
Version : #140-Ubuntu SMP Thu Aug 4 02:23:37 UTC 2022
machine : x86_64
processor : x86_64
byteorder : little
LC_ALL : None
LANG : en_US.UTF-8
LOCALE : en_US.UTF-8
pandas : 1.5.2
numpy : 1.23.3
pytz : 2022.4
dateutil : 2.8.2
setuptools : 65.4.1
pip : 22.2.2
Cython : None
pytest : 7.1.3
hypothesis : None
sphinx : 5.3.0
blosc : None
feather : 0.4.1
xlsxwriter : None
lxml.etree : 4.9.1
html5lib : None
pymysql : None
psycopg2 : 2.9.3
jinja2 : 3.1.2
IPython : 8.4.0
pandas_datareader: None
bs4 : None
bottleneck : None
brotli :
fastparquet : 0.8.3
fsspec : 2022.8.2
gcsfs : None
matplotlib : 3.3.0
numba : None
numexpr : 2.8.3
odfpy : None
openpyxl : 3.0.10
pandas_gbq : 0.17.9
pyarrow : 9.0.0
pyreadstat : None
pyxlsb : None
s3fs : 2022.8.2
scipy : 1.9.1
snappy : None
sqlalchemy : 1.4.41
tables : 3.7.0
tabulate : None
xarray : 2022.9.0
xlrd : 2.0.1
xlwt : None
zstandard : None
tzdata : None