@@ -412,8 +412,10 @@ def time_frame_nunique(self):
412
412
class Duplicated (object ):
413
413
414
414
goal_time = 0.2
415
+ params = (['first' , 'last' ], [True , False ])
416
+ param_names = ['keep' , 'return_inverse' ]
415
417
416
- def setup (self ):
418
+ def setup (self , keep , return_inverse ):
417
419
n = (1 << 20 )
418
420
t = date_range ('2015-01-01' , freq = 'S' , periods = (n // 64 ))
419
421
xs = np .random .randn (n // 64 ).round (2 )
@@ -428,24 +430,23 @@ def setup(self):
428
430
df3 .loc [:, 'F' ] = Series ('' , index = df3 .index ).str .cat (df3 .astype (str ))
429
431
self .df3 = df3
430
432
431
- def time_frame_duplicated (self ):
432
- self .df .duplicated ()
433
-
434
- def time_frame_duplicated_wide (self ):
435
- self .df2 .duplicated ()
436
-
437
- def time_frame_duplicated_wide_inverse (self ):
438
- # will take fastpath for no duplicates
439
- self .df2 .duplicated (return_inverse = True )
440
-
441
- def time_frame_duplicated_mixed (self ):
442
- self .df3 .duplicated ()
443
-
444
- def time_frame_duplicated_mixed_inverse (self ):
445
- self .df3 .duplicated (return_inverse = True )
446
-
447
- def time_frame_duplicated_mixed_inverse_last (self ):
448
- self .df3 .duplicated (return_inverse = True , keep = 'last' )
433
+ def time_frame_duplicated (self , keep , return_inverse ):
434
+ if return_inverse :
435
+ self .df .duplicated (keep = keep , return_inverse = return_inverse )
436
+ else :
437
+ self .df .duplicated (keep = keep )
438
+
439
+ def time_frame_duplicated_wide (self , keep , return_inverse ):
440
+ if return_inverse :
441
+ self .df2 .duplicated (keep = keep , return_inverse = return_inverse )
442
+ else :
443
+ self .df2 .duplicated (keep = keep )
444
+
445
+ def time_frame_duplicated_mixed (self , keep , return_inverse ):
446
+ if return_inverse :
447
+ self .df3 .duplicated (keep = keep , return_inverse = return_inverse )
448
+ else :
449
+ self .df3 .duplicated (keep = keep )
449
450
450
451
451
452
class XS (object ):
0 commit comments