@@ -120,14 +120,14 @@ def merge(self, other):
120120 # union_ref = self.ref_items + other.ref_items
121121 return _merge_blocks ([self , other ], self .ref_items )
122122
123- def reindex_axis (self , indexer , mask , needs_masking , axis = 0 ,
124- fill_value = np .nan ):
123+ def reindex_axis (self , indexer , axis = 1 , fill_value = np .nan , mask_info = None ):
125124 """
126125 Reindex using pre-computed indexer information
127126 """
128- new_values = com .take_fast (self .values , indexer ,
129- mask , needs_masking , axis = axis ,
130- fill_value = fill_value )
127+ if axis < 1 :
128+ raise AssertionError ('axis must be at least 1, got %d' % axis )
129+ new_values = com .take_nd (self .values , indexer , axis ,
130+ fill_value = fill_value , mask_info = mask_info )
131131 return make_block (new_values , self .items , self .ref_items )
132132
133133 def reindex_items_from (self , new_ref_items , copy = True ):
@@ -146,12 +146,9 @@ def reindex_items_from(self, new_ref_items, copy=True):
146146 new_items = new_ref_items
147147 new_values = self .values .copy () if copy else self .values
148148 else :
149- mask = indexer != - 1
150- masked_idx = indexer [mask ]
151-
152- new_values = com .take_fast (self .values , masked_idx ,
153- mask = None , needs_masking = False ,
154- axis = 0 )
149+ masked_idx = indexer [indexer != - 1 ]
150+ new_values = com .take_nd (self .values , masked_idx , axis = 0 ,
151+ allow_fill = False )
155152 new_items = self .items .take (masked_idx )
156153 return make_block (new_values , new_items , new_ref_items )
157154
@@ -221,7 +218,10 @@ def fillna(self, value, inplace=False):
221218 return make_block (new_values , self .items , self .ref_items )
222219
223220 def astype (self , dtype , copy = True , raise_on_error = True ):
224- """ coerce to the new type (if copy=True, return a new copy) raise on an except if raise == True """
221+ """
222+ Coerce to the new type (if copy=True, return a new copy)
223+ raise on an except if raise == True
224+ """
225225 try :
226226 newb = make_block (com ._astype_nansafe (self .values , dtype , copy = copy ),
227227 self .items , self .ref_items )
@@ -231,12 +231,12 @@ def astype(self, dtype, copy = True, raise_on_error = True):
231231 newb = self .copy () if copy else self
232232
233233 if newb .is_numeric and self .is_numeric :
234- if newb .shape != self .shape or ( not copy and newb . itemsize < self . itemsize ):
235- raise TypeError ( "cannot set astype for copy = [%s] for dtype (%s [%s]) with smaller itemsize that current (%s [%s])" % ( copy ,
236- self . dtype . name ,
237- self . itemsize ,
238- newb .dtype .name ,
239- newb .itemsize ))
234+ if ( newb .shape != self .shape or
235+ ( not copy and newb . itemsize < self . itemsize )):
236+ raise TypeError ( "cannot set astype for copy = [%s] for dtype "
237+ "(%s [%s]) with smaller itemsize that current "
238+ "(%s [%s])" % ( copy , self .dtype .name ,
239+ self . itemsize , newb . dtype . name , newb .itemsize ))
240240 return newb
241241
242242 def convert (self , copy = True , ** kwargs ):
@@ -356,11 +356,11 @@ def interpolate(self, method='pad', axis=0, inplace=False,
356356
357357 return make_block (values , self .items , self .ref_items )
358358
359- def take (self , indexer , axis = 1 , fill_value = np . nan ):
359+ def take (self , indexer , axis = 1 ):
360360 if axis < 1 :
361361 raise AssertionError ('axis must be at least 1, got %d' % axis )
362- new_values = com .take_fast (self .values , indexer , None , False ,
363- axis = axis , fill_value = fill_value )
362+ new_values = com .take_nd (self .values , indexer , axis = axis ,
363+ allow_fill = False )
364364 return make_block (new_values , self .items , self .ref_items )
365365
366366 def get_values (self , dtype ):
@@ -1320,15 +1320,9 @@ def reindex_indexer(self, new_axis, indexer, axis=1, fill_value=np.nan):
13201320 if axis == 0 :
13211321 return self ._reindex_indexer_items (new_axis , indexer , fill_value )
13221322
1323- mask = indexer == - 1
1324-
1325- # TODO: deal with length-0 case? or does it fall out?
1326- needs_masking = len (new_axis ) > 0 and mask .any ()
1327-
13281323 new_blocks = []
13291324 for block in self .blocks :
1330- newb = block .reindex_axis (indexer , mask , needs_masking ,
1331- axis = axis , fill_value = fill_value )
1325+ newb = block .reindex_axis (indexer , axis = axis , fill_value = fill_value )
13321326 new_blocks .append (newb )
13331327
13341328 new_axes = list (self .axes )
@@ -1354,8 +1348,8 @@ def _reindex_indexer_items(self, new_items, indexer, fill_value):
13541348 continue
13551349
13561350 new_block_items = new_items .take (selector .nonzero ()[0 ])
1357- new_values = com .take_fast (blk .values , blk_indexer [selector ],
1358- None , False , axis = 0 )
1351+ new_values = com .take_nd (blk .values , blk_indexer [selector ], axis = 0 ,
1352+ allow_fill = False )
13591353 new_blocks .append (make_block (new_values , new_block_items ,
13601354 new_items ))
13611355
@@ -1419,8 +1413,8 @@ def _make_na_block(self, items, ref_items, fill_value=np.nan):
14191413 return na_block
14201414
14211415 def take (self , indexer , axis = 1 ):
1422- if axis == 0 :
1423- raise NotImplementedError
1416+ if axis < 1 :
1417+ raise AssertionError ( 'axis must be at least 1, got %d' % axis )
14241418
14251419 indexer = com ._ensure_platform_int (indexer )
14261420
@@ -1433,8 +1427,8 @@ def take(self, indexer, axis=1):
14331427 new_axes [axis ] = self .axes [axis ].take (indexer )
14341428 new_blocks = []
14351429 for blk in self .blocks :
1436- new_values = com .take_fast (blk .values , indexer , None , False ,
1437- axis = axis )
1430+ new_values = com .take_nd (blk .values , indexer , axis = axis ,
1431+ allow_fill = False )
14381432 newb = make_block (new_values , blk .items , self .items )
14391433 new_blocks .append (newb )
14401434
0 commit comments