5
5
6
6
from pandas .core .index import Index , _ensure_index
7
7
from pandas .util .decorators import cache_readonly
8
- import pandas .core .common as common
8
+ import pandas .core .common as com
9
9
import pandas ._tseries as lib
10
10
11
11
class Block (object ):
@@ -107,8 +107,8 @@ def reindex_axis(self, indexer, mask, needs_masking, axis=0):
107
107
Reindex using pre-computed indexer information
108
108
"""
109
109
if self .values .size > 0 :
110
- new_values = common .take_fast (self .values , indexer , mask ,
111
- needs_masking , axis = axis )
110
+ new_values = com .take_fast (self .values , indexer , mask ,
111
+ needs_masking , axis = axis )
112
112
else :
113
113
shape = list (self .shape )
114
114
shape [axis ] = len (indexer )
@@ -130,7 +130,12 @@ def reindex_items_from(self, new_ref_items):
130
130
new_ref_items , indexer = self .items .reindex (new_ref_items )
131
131
mask = indexer != - 1
132
132
masked_idx = indexer [mask ]
133
- new_values = self .values .take (masked_idx , axis = 0 )
133
+
134
+ if self .values .ndim == 2 :
135
+ new_values = com .take_2d (self .values , masked_idx , axis = 0 )
136
+ else :
137
+ new_values = self .values .take (masked_idx , axis = 0 )
138
+
134
139
new_items = self .items .take (masked_idx )
135
140
return make_block (new_values , new_items , new_ref_items )
136
141
@@ -196,7 +201,7 @@ def split_block_at(self, item):
196
201
197
202
def fillna (self , value ):
198
203
new_values = self .values .copy ()
199
- mask = common .isnull (new_values .ravel ())
204
+ mask = com .isnull (new_values .ravel ())
200
205
new_values .flat [mask ] = value
201
206
return make_block (new_values , self .items , self .ref_items )
202
207
@@ -670,8 +675,8 @@ def reindex_indexer(self, new_axis, indexer, axis=1):
670
675
new_axes [axis ] = new_axis
671
676
new_blocks = []
672
677
for blk in self .blocks :
673
- new_values = common .take_fast (blk .values , indexer , None ,
674
- False , axis = axis )
678
+ new_values = com .take_fast (blk .values , indexer , None ,
679
+ False , axis = axis )
675
680
newb = make_block (new_values , blk .items , self .items )
676
681
new_blocks .append (newb )
677
682
@@ -729,8 +734,8 @@ def take(self, indexer, axis=1):
729
734
new_axes [axis ] = self .axes [axis ].take (indexer )
730
735
new_blocks = []
731
736
for blk in self .blocks :
732
- new_values = common .take_fast (blk .values , indexer ,
733
- None , False , axis = axis )
737
+ new_values = com .take_fast (blk .values , indexer ,
738
+ None , False , axis = axis )
734
739
newb = make_block (new_values , blk .items , self .items )
735
740
new_blocks .append (newb )
736
741
@@ -1191,21 +1196,21 @@ def _merge_blocks(self, lblk, rblk):
1191
1196
# is this really faster than assigning to arr.flat?
1192
1197
if lidx is None :
1193
1198
# out[:lk] = lblk.values
1194
- common .take_fast (lblk .values , np .arange (n , dtype = 'i4' ),
1195
- None , False ,
1196
- axis = self .axis , out = out [:lk ])
1199
+ com .take_fast (lblk .values , np .arange (n , dtype = 'i4' ),
1200
+ None , False ,
1201
+ axis = self .axis , out = out [:lk ])
1197
1202
else :
1198
1203
# write out the values to the result array
1199
- common .take_fast (lblk .values , lidx , None , False ,
1204
+ com .take_fast (lblk .values , lidx , None , False ,
1200
1205
axis = self .axis , out = out [:lk ])
1201
1206
if ridx is None :
1202
1207
# out[lk:] = lblk.values
1203
- common .take_fast (rblk .values , np .arange (n , dtype = 'i4' ),
1204
- None , False ,
1205
- axis = self .axis , out = out [lk :])
1208
+ com .take_fast (rblk .values , np .arange (n , dtype = 'i4' ),
1209
+ None , False ,
1210
+ axis = self .axis , out = out [lk :])
1206
1211
else :
1207
- common .take_fast (rblk .values , ridx , None , False ,
1208
- axis = self .axis , out = out [lk :])
1212
+ com .take_fast (rblk .values , ridx , None , False ,
1213
+ axis = self .axis , out = out [lk :])
1209
1214
1210
1215
# does not sort
1211
1216
new_items = lblk .items .append (rblk .items )
0 commit comments