@@ -164,25 +164,38 @@ class SetOperations:
164164
165165 params = [
166166 ("monotonic" , "non_monotonic" ),
167+ ("datetime" , "int" , "string" ),
167168 ("intersection" , "union" , "symmetric_difference" ),
168169 ]
169- param_names = ["index_structure" , "method" ]
170+ param_names = ["index_structure" , "dtype" , " method" ]
170171
171- def setup (self , index_structure , method ):
172+ def setup (self , index_structure , dtype , method ):
172173 N = 10 ** 5
173- values = np .arange (N )
174+ level1 = range (1000 )
175+
176+ level2 = date_range (start = "1/1/2000" , periods = N // 1000 )
177+ dates_left = MultiIndex .from_product ([level1 , level2 ])
178+
179+ level2 = range (N // 1000 )
180+ int_left = MultiIndex .from_product ([level1 , level2 ])
181+
182+ level2 = tm .makeStringIndex (N // 1000 ).values
183+ str_left = MultiIndex .from_product ([level1 , level2 ])
184+
185+ data = {
186+ "datetime" : dates_left ,
187+ "int" : int_left ,
188+ "string" : str_left ,
189+ }
174190
175- if index_structure == "monotonic" :
176- mi = MultiIndex .from_arrays ([values , values ])
177- else :
178- mi = MultiIndex .from_arrays (
179- [np .concatenate ([values [::2 ], values [1 ::2 ]]), values ]
180- )
191+ if index_structure == "non_monotonic" :
192+ data = {k : mi [::- 1 ] for k , mi in data .items ()}
181193
182- self .left = mi
183- self .right = mi [:- 1 ]
194+ data = {k : {"left" : mi , "right" : mi [:- 1 ]} for k , mi in data .items ()}
195+ self .left = data [dtype ]["left" ]
196+ self .right = data [dtype ]["right" ]
184197
185- def time_operation (self , index_structure , method ):
198+ def time_operation (self , index_structure , dtype , method ):
186199 getattr (self .left , method )(self .right )
187200
188201
0 commit comments