@@ -2945,3 +2945,23 @@ def test_decimal_na_sort(test_series):
29452945 result = gb ._grouper .result_index
29462946 expected = Index ([Decimal (1 ), None ], name = "key" )
29472947 tm .assert_index_equal (result , expected )
2948+
2949+
2950+ def test_groupby_dropna_with_nunique_unique ():
2951+ # GH#42016
2952+ df = [[1 , 1 , 1 , "A" ], [1 , None , 1 , "A" ], [1 , None , 2 , "A" ], [1 , None , 3 , "A" ]]
2953+ df_dropna = DataFrame (df , columns = ["a" , "b" , "c" , "partner" ])
2954+ result = df_dropna .groupby (["a" , "b" , "c" ], dropna = False ).agg (
2955+ {"partner" : ["nunique" , "unique" ]}
2956+ )
2957+
2958+ index = MultiIndex .from_tuples (
2959+ [(1 , 1.0 , 1 ), (1 , np .nan , 1 ), (1 , np .nan , 2 ), (1 , np .nan , 3 )],
2960+ names = ["a" , "b" , "c" ],
2961+ )
2962+ columns = MultiIndex .from_tuples ([("partner" , "nunique" ), ("partner" , "unique" )])
2963+ expected = DataFrame (
2964+ [(1 , ["A" ]), (1 , ["A" ]), (1 , ["A" ]), (1 , ["A" ])], index = index , columns = columns
2965+ )
2966+
2967+ tm .assert_frame_equal (result , expected )
0 commit comments