@@ -109,11 +109,8 @@ def cut(x, bins, right=True, labels=None, retbins=False, precision=3,
109
109
if (np .diff (bins ) < 0 ).any ():
110
110
raise ValueError ('bins must increase monotonically.' )
111
111
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 )
117
114
118
115
119
116
@@ -168,18 +165,21 @@ def qcut(x, q, labels=None, retbins=False, precision=3):
168
165
else :
169
166
quantiles = q
170
167
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 )
176
170
177
171
178
172
179
173
def _bins_to_cuts (x , bins , right = True , labels = None , retbins = False ,
180
174
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
+
183
183
x = np .asarray (x )
184
184
185
185
side = 'left' if right else 'right'
@@ -224,6 +224,9 @@ def _bins_to_cuts(x, bins, right=True, labels=None, retbins=False,
224
224
fac = fac .astype (np .float64 )
225
225
np .putmask (fac , na_mask , np .nan )
226
226
227
+ if x_is_series :
228
+ fac = Series (fac , index = series_index )
229
+
227
230
if not retbins :
228
231
return fac
229
232
0 commit comments