3
3
import numpy as np
4
4
from pandas .compat import zip
5
5
6
- from pandas import Series , Index
6
+ from pandas import Series , Index , Categorical
7
7
import pandas .util .testing as tm
8
8
from pandas .util .testing import assertRaisesRegexp
9
9
import pandas .core .common as com
@@ -239,7 +239,6 @@ def test_qcut_binning_issues(self):
239
239
self .assertTrue (ep <= sn )
240
240
241
241
def test_cut_return_categorical (self ):
242
- from pandas import Categorical
243
242
s = Series ([0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ])
244
243
res = cut (s , 3 )
245
244
exp = Series (Categorical .from_codes ([0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 , 2 ],
@@ -249,7 +248,6 @@ def test_cut_return_categorical(self):
249
248
tm .assert_series_equal (res , exp )
250
249
251
250
def test_qcut_return_categorical (self ):
252
- from pandas import Categorical
253
251
s = Series ([0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ])
254
252
res = qcut (s , [0 , 0.333 , 0.666 , 1 ])
255
253
exp = Series (Categorical .from_codes ([0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 , 2 ],
@@ -285,6 +283,60 @@ def test_qcut_duplicates_bin(self):
285
283
# invalid
286
284
self .assertRaises (ValueError , qcut , values , 3 , duplicates = 'foo' )
287
285
286
+ def test_single_quantile (self ):
287
+ # issue 15431
288
+ expected = Series ([0 , 0 ])
289
+
290
+ s = Series ([9. , 9. ])
291
+ result = qcut (s , 1 , labels = False )
292
+ tm .assert_series_equal (result , expected )
293
+ result = qcut (s , 1 )
294
+ exp_lab = Series (Categorical .from_codes ([0 , 0 ], ["[9, 9]" ],
295
+ ordered = True ))
296
+ tm .assert_series_equal (result , exp_lab )
297
+
298
+ s = Series ([- 9. , - 9. ])
299
+ result = qcut (s , 1 , labels = False )
300
+ tm .assert_series_equal (result , expected )
301
+ result = qcut (s , 1 )
302
+ exp_lab = Series (Categorical .from_codes ([0 , 0 ], ["[-9, -9]" ],
303
+ ordered = True ))
304
+ tm .assert_series_equal (result , exp_lab )
305
+
306
+ s = Series ([0. , 0. ])
307
+ result = qcut (s , 1 , labels = False )
308
+ tm .assert_series_equal (result , expected )
309
+ result = qcut (s , 1 )
310
+ exp_lab = Series (Categorical .from_codes ([0 , 0 ], ["[0, 0]" ],
311
+ ordered = True ))
312
+ tm .assert_series_equal (result , exp_lab )
313
+
314
+ expected = Series ([0 ])
315
+
316
+ s = Series ([9 ])
317
+ result = qcut (s , 1 , labels = False )
318
+ tm .assert_series_equal (result , expected )
319
+ result = qcut (s , 1 )
320
+ exp_lab = Series (Categorical .from_codes ([0 ], ["[9, 9]" ],
321
+ ordered = True ))
322
+ tm .assert_series_equal (result , exp_lab )
323
+
324
+ s = Series ([- 9 ])
325
+ result = qcut (s , 1 , labels = False )
326
+ tm .assert_series_equal (result , expected )
327
+ result = qcut (s , 1 )
328
+ exp_lab = Series (Categorical .from_codes ([0 ], ["[-9, -9]" ],
329
+ ordered = True ))
330
+ tm .assert_series_equal (result , exp_lab )
331
+
332
+ s = Series ([0 ])
333
+ result = qcut (s , 1 , labels = False )
334
+ tm .assert_series_equal (result , expected )
335
+ result = qcut (s , 1 )
336
+ exp_lab = Series (Categorical .from_codes ([0 ], ["[0, 0]" ],
337
+ ordered = True ))
338
+ tm .assert_series_equal (result , exp_lab )
339
+
288
340
def test_single_bin (self ):
289
341
# issue 14652
290
342
expected = Series ([0 , 0 ])
@@ -297,6 +349,29 @@ def test_single_bin(self):
297
349
result = cut (s , 1 , labels = False )
298
350
tm .assert_series_equal (result , expected )
299
351
352
+ expected = Series ([0 ])
353
+
354
+ s = Series ([9 ])
355
+ result = cut (s , 1 , labels = False )
356
+ tm .assert_series_equal (result , expected )
357
+
358
+ s = Series ([- 9 ])
359
+ result = cut (s , 1 , labels = False )
360
+ tm .assert_series_equal (result , expected )
361
+
362
+ # issue 15428
363
+ expected = Series ([0 , 0 ])
364
+
365
+ s = Series ([0. , 0. ])
366
+ result = cut (s , 1 , labels = False )
367
+ tm .assert_series_equal (result , expected )
368
+
369
+ expected = Series ([0 ])
370
+
371
+ s = Series ([0 ])
372
+ result = cut (s , 1 , labels = False )
373
+ tm .assert_series_equal (result , expected )
374
+
300
375
def test_datetime_cut (self ):
301
376
# GH 14714
302
377
# testing for time data to be present as series
0 commit comments