Skip to content

Commit 5c52211

Browse files
committed
EHN: Groupby on multiindex with missing data in group keys raises
IndexError (pandas-dev#20519) * if all the values in a level of a MultiIndex were missing, fill with numpy nan
1 parent def01cf commit 5c52211

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

doc/source/whatsnew/v1.0.0.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ Groupby/resample/rolling
174174
^^^^^^^^^^^^^^^^^^^^^^^^
175175

176176
-
177-
-
177+
- ``IndexError`` would not raise if all the values in a level of a MultiIndex were missing (:issue:`20519`)
178+
- Bug in :meth:`DataFrame.rolling` not allowing for rolling over datetimes when ``axis=1`` (:issue: `28192`)
178179
- Bug in :meth:`DataFrame.groupby` not offering selection by column name when ``axis=1`` (:issue:`27614`)
179180

180181
Reshaping

pandas/tests/groupby/test_grouping.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,6 +628,52 @@ def test_groupby_empty(self):
628628
# check name
629629
assert s.groupby(s).grouper.names == ["name"]
630630

631+
<<<<<<< HEAD
632+
=======
633+
def test_groupby_level_index_value_all_na(self):
634+
# issue 20519
635+
df = pd.DataFrame([["x", np.nan, 10]], columns=["A", "B", "C"]).set_index(
636+
["A", "B"]
637+
)
638+
result = df.groupby(level=["A", "B"]).sum()
639+
expected = DataFrame(
640+
data=[],
641+
index=MultiIndex(
642+
levels=[
643+
Index(["x"], dtype="object", name="A"),
644+
Index([], dtype='float64', name="B")
645+
],
646+
codes=[[], []]
647+
),
648+
columns=["C"],
649+
dtype='int64'
650+
)
651+
tm.assert_frame_equal(
652+
result,
653+
expected
654+
)
655+
656+
df = pd.DataFrame(
657+
[[None, None, "x", 10], [None, "y", None, 20]],
658+
columns=["A", "B", "C", "D"]
659+
).set_index(["A", "B", "C"])
660+
result = df.groupby(level=["A", "B", "C"]).sum()
661+
expected = DataFrame(
662+
data=[],
663+
index=MultiIndex(
664+
levels=[[], ["y"], ["x"]],
665+
codes=[[], [], []],
666+
names=["A", "B", "C"]
667+
),
668+
columns=["D"],
669+
dtype='int64'
670+
)
671+
tm.assert_frame_equal(
672+
result,
673+
expected
674+
)
675+
676+
>>>>>>> 39030fba6... EHN: Groupby on multiindex with missing data in group keys raises
631677

632678
# get_group
633679
# --------------------------------

0 commit comments

Comments
 (0)