@@ -49,16 +49,30 @@ class Duplicates(object):
49
49
goal_time = 0.2
50
50
51
51
def setup (self ):
52
- size = 65536
52
+ size = 6553
53
53
arrays = [np .random .randint (0 , 8192 , size ),
54
54
np .random .randint (0 , 1024 , size )]
55
- mask = np .random .rand (size ) < 0.1
56
55
self .mi_unused_levels = MultiIndex .from_arrays (arrays )
57
- self .mi_unused_levels = self .mi_unused_levels [mask ]
56
+ self .mi = self .mi_unused_levels .remove_unused_levels ()
57
+ self .sorted = self .mi .sort_values ()
58
+ self .key = self .mi [len (self .mi ) // 2 ]
59
+ self .partial_key = (self .key [0 ],)
58
60
59
61
def time_remove_unused_levels (self ):
60
62
self .mi_unused_levels .remove_unused_levels ()
61
63
64
+ def time_duplicates_loc (self ):
65
+ self .mi .get_loc (self .key )
66
+
67
+ def time_duplicates_partial_loc (self ):
68
+ self .mi .get_loc (self .partial_key )
69
+
70
+ def time_duplicates_sorted_loc (self ):
71
+ self .sorted .get_loc (self .key )
72
+
73
+ def time_duplicates_sorted_partial_loc (self ):
74
+ self .sorted .get_loc (self .partial_key )
75
+
62
76
63
77
class Integer (object ):
64
78
@@ -91,10 +105,25 @@ def setup(self):
91
105
1000 + np .arange (n )]
92
106
labels = [np .random .choice (n , (k * n )) for lev in levels ]
93
107
self .mi = MultiIndex (levels = levels , labels = labels )
108
+ self .sorted = self .mi .sort_values ()
109
+ self .key = self .mi [len (self .mi ) // 2 ]
110
+ self .partial_key = (self .key [0 ], self .key [1 ])
94
111
95
112
def time_duplicated (self ):
96
113
self .mi .duplicated ()
97
114
115
+ def time_duplicated_loc (self ):
116
+ self .mi .get_loc (self .key )
117
+
118
+ def time_duplicated_partial_loc (self ):
119
+ self .mi .get_loc (self .partial_key )
120
+
121
+ def time_duplicates_sorted_loc (self ):
122
+ self .sorted .get_loc (self .key )
123
+
124
+ def time_duplicates_sorted_partial_loc (self ):
125
+ self .sorted .get_loc (self .partial_key )
126
+
98
127
99
128
class Sortlevel (object ):
100
129
0 commit comments