@@ -109,11 +109,8 @@ def cut(x, bins, right=True, labels=None, retbins=False, precision=3,
109109 if (np .diff (bins ) < 0 ).any ():
110110 raise ValueError ('bins must increase monotonically.' )
111111
112- res = _bins_to_cuts (x , bins , right = right , labels = labels ,retbins = retbins , precision = precision ,
113- include_lowest = include_lowest )
114- if isinstance (x , Series ):
115- res = Series (res , index = x .index )
116- return res
112+ return _bins_to_cuts (x , bins , right = right , labels = labels ,retbins = retbins , precision = precision ,
113+ include_lowest = include_lowest )
117114
118115
119116
@@ -168,18 +165,21 @@ def qcut(x, q, labels=None, retbins=False, precision=3):
168165 else :
169166 quantiles = q
170167 bins = algos .quantile (x , quantiles )
171- res = _bins_to_cuts (x , bins , labels = labels , retbins = retbins ,precision = precision ,
172- include_lowest = True )
173- if isinstance (x , Series ):
174- res = Series (res , index = x .index )
175- return res
168+ return _bins_to_cuts (x , bins , labels = labels , retbins = retbins ,precision = precision ,
169+ include_lowest = True )
176170
177171
178172
179173def _bins_to_cuts (x , bins , right = True , labels = None , retbins = False ,
180174 precision = 3 , name = None , include_lowest = False ):
181- if name is None and isinstance (x , Series ):
182- name = x .name
175+ x_is_series = isinstance (x , Series )
176+ series_index = None
177+
178+ if x_is_series :
179+ series_index = x .index
180+ if name is None :
181+ name = x .name
182+
183183 x = np .asarray (x )
184184
185185 side = 'left' if right else 'right'
@@ -224,6 +224,9 @@ def _bins_to_cuts(x, bins, right=True, labels=None, retbins=False,
224224 fac = fac .astype (np .float64 )
225225 np .putmask (fac , na_mask , np .nan )
226226
227+ if x_is_series :
228+ fac = Series (fac , index = series_index )
229+
227230 if not retbins :
228231 return fac
229232
0 commit comments