@@ -190,6 +190,34 @@ def test_factorize_nan(self):
190
190
assert len (set (key )) == len (set (expected ))
191
191
tm .assert_numpy_array_equal (pd .isna (key ), expected == na_sentinel )
192
192
193
+ @pytest .mark .parametrize ("data,expected_label,expected_level" , [
194
+ (
195
+ [(1 , 1 ), (1 , 2 ), (0 , 0 ), (1 , 2 ), 'nonsense' ],
196
+ [0 , 1 , 2 , 1 , 3 ],
197
+ [(1 , 1 ), (1 , 2 ), (0 , 0 ), 'nonsense' ]
198
+ ),
199
+ (
200
+ [(1 , 1 ), (1 , 2 ), (0 , 0 ), (1 , 2 ), (1 , 2 , 3 )],
201
+ [0 , 1 , 2 , 1 , 3 ],
202
+ [(1 , 1 ), (1 , 2 ), (0 , 0 ), (1 , 2 , 3 )]
203
+ ),
204
+ (
205
+ [(1 , 1 ), (1 , 2 ), (0 , 0 ), (1 , 2 )],
206
+ [0 , 1 , 2 , 1 ],
207
+ [(1 , 1 ), (1 , 2 ), (0 , 0 )]
208
+ )
209
+ ])
210
+ def test_factorize_tuple_list (self , data , expected_label , expected_level ):
211
+ # GH9454
212
+ result = pd .factorize (data )
213
+
214
+ tm .assert_numpy_array_equal (result [0 ],
215
+ np .array (expected_label ))
216
+
217
+ expected_level_array = np .empty (len (expected_level ), dtype = object )
218
+ expected_level_array [:] = expected_level
219
+ tm .assert_numpy_array_equal (result [1 ], expected_level_array )
220
+
193
221
def test_complex_sorting (self ):
194
222
# gh 12666 - check no segfault
195
223
# Test not valid numpy versions older than 1.11
0 commit comments