@@ -164,25 +164,38 @@ class SetOperations:
164
164
165
165
params = [
166
166
("monotonic" , "non_monotonic" ),
167
+ ("datetime" , "int" , "string" ),
167
168
("intersection" , "union" , "symmetric_difference" ),
168
169
]
169
- param_names = ["index_structure" , "method" ]
170
+ param_names = ["index_structure" , "dtype" , " method" ]
170
171
171
- def setup (self , index_structure , method ):
172
+ def setup (self , index_structure , dtype , method ):
172
173
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
+ }
174
190
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 ()}
181
193
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" ]
184
197
185
- def time_operation (self , index_structure , method ):
198
+ def time_operation (self , index_structure , dtype , method ):
186
199
getattr (self .left , method )(self .right )
187
200
188
201
0 commit comments