diff --git a/asv_bench/benchmarks/frame_methods.py b/asv_bench/benchmarks/frame_methods.py index 3c4ffb13b9ec29..53816b6433ee70 100644 --- a/asv_bench/benchmarks/frame_methods.py +++ b/asv_bench/benchmarks/frame_methods.py @@ -412,8 +412,10 @@ def time_frame_nunique(self): class Duplicated(object): goal_time = 0.2 + params = (['first', 'last'], [True, False]) + param_names = ['keep', 'return_inverse'] - def setup(self): + def setup(self, keep, return_inverse): n = (1 << 20) t = date_range('2015-01-01', freq='S', periods=(n // 64)) xs = np.random.randn(n // 64).round(2) @@ -428,24 +430,23 @@ def setup(self): df3.loc[:, 'F'] = Series('', index=df3.index).str.cat(df3.astype(str)) self.df3 = df3 - def time_frame_duplicated(self): - self.df.duplicated() - - def time_frame_duplicated_wide(self): - self.df2.duplicated() - - def time_frame_duplicated_wide_inverse(self): - # will take fastpath for no duplicates - self.df2.duplicated(return_inverse=True) - - def time_frame_duplicated_mixed(self): - self.df3.duplicated() - - def time_frame_duplicated_mixed_inverse(self): - self.df3.duplicated(return_inverse=True) - - def time_frame_duplicated_mixed_inverse_last(self): - self.df3.duplicated(return_inverse=True, keep='last') + def time_frame_duplicated(self, keep, return_inverse): + if return_inverse: + self.df.duplicated(keep=keep, return_inverse=return_inverse) + else: + self.df.duplicated(keep=keep) + + def time_frame_duplicated_wide(self, keep, return_inverse): + if return_inverse: + self.df2.duplicated(keep=keep, return_inverse=return_inverse) + else: + self.df2.duplicated(keep=keep) + + def time_frame_duplicated_mixed(self, keep, return_inverse): + if return_inverse: + self.df3.duplicated(keep=keep, return_inverse=return_inverse) + else: + self.df3.duplicated(keep=keep) class XS(object):