@@ -453,28 +453,32 @@ def test_dataframe_categorical_with_nan(observed):
453
453
tm .assert_frame_equal (result , expected )
454
454
455
455
456
- @pytest .mark .parametrize ("ordered" , [True , False ])
456
+ @pytest .mark .parametrize ("ordered" , [True , False ])
457
457
@pytest .mark .parametrize ("observed" , [True , False ])
458
- @pytest .mark .parametrize ("sort" , [True , False ])
458
+ @pytest .mark .parametrize ("sort" , [True , False ])
459
459
def test_dataframe_categorical_ordered_observed_sort (ordered , observed , sort ):
460
- # GH 25871: Fix groupby sorting on ordered Categoricals
461
- # Build a dataframe with a Categorical having one unobserved category ('AWOL'), and a Series with identical values
462
- cat = pd .Categorical (['d' , 'a' , 'b' , 'a' , 'd' , 'b' ], categories = ['a' , 'b' , 'AWOL' , 'd' ], ordered = ordered )
463
- val = pd .Series (['d' , 'a' , 'b' , 'a' , 'd' , 'b' ])
464
- df = pd .DataFrame ({'cat' : cat , 'val' : val })
460
+ # GH 25871: Fix groupby sorting on ordered Categoricals
461
+ # Build a dataframe with a Categorical having one unobserved category ('AWOL'),
462
+ # and a Series with identical values
463
+ cat = pd .Categorical (['d' , 'a' , 'b' , 'a' , 'd' , 'b' ],
464
+ categories = ['a' , 'b' , 'AWOL' , 'd' ],
465
+ ordered = ordered )
466
+ val = pd .Series (['d' , 'a' , 'b' , 'a' , 'd' , 'b' ])
467
+ df = pd .DataFrame ({'cat' : cat , 'val' : val })
465
468
466
469
# aggregate on the Categorical
467
- result = df .groupby ('cat' , observed = observed , sort = sort )['val' ].agg ('first' )
470
+ result = (df .groupby ('cat' , observed = observed , sort = sort )['val' ]
471
+ .aggregate ('first' ))
468
472
469
- # If ordering is correct , we expect index labels equal to aggregation results,
470
- # except for 'observed=False', when index contains 'AWOL' and aggregation None
473
+ # If ordering works , we expect index labels equal to aggregation results,
474
+ # except for 'observed=False': index contains 'AWOL' and aggregation None
471
475
label = pd .Series (result .index .array , dtype = 'object' )
472
- aggr = pd .Series (result .array )
476
+ aggr = pd .Series (result .array )
473
477
if not observed :
474
478
aggr [aggr .isna ()] = 'AWOL'
475
- tm .assert_equal (label , aggr )
479
+ tm .assert_equal (label , aggr )
480
+
476
481
477
-
478
482
def test_datetime ():
479
483
# GH9049: ensure backward compatibility
480
484
levels = pd .date_range ('2014-01-01' , periods = 4 )
0 commit comments