def _slice_take_blocks_ax0(self, slice_or_indexer, fill_tuple=None):
allow_fill = fill_tuple is not None<EOL>sl_type, slobj, sllen = _preprocess_slice_or_indexer(<EOL>slice_or_indexer, self.shape[<NUM_LIT:0>], allow_fill=allow_fill)<EOL>if self._is_single_block:<EOL><INDENT>blk = self.blocks[<NUM_LIT:0>]<EOL>if sl_type in ('<STR_LIT>', '<STR_LIT>'):<EOL><INDENT>return [blk.getitem_block(slobj, new_mgr_locs=slice(<NUM_LIT:0>, sllen))]<EOL><DEDENT>elif not allow_fill or self.ndim == <NUM_LIT:1>:<EOL><INDENT>if allow_fill and fill_tuple[<NUM_LIT:0>] is None:<EOL><INDENT>_, fill_value = maybe_promote(blk.dtype)<EOL>fill_tuple = (fill_value, )<EOL><DEDENT>return [blk.take_nd(slobj, axis=<NUM_LIT:0>,<EOL>new_mgr_locs=slice(<NUM_LIT:0>, sllen),<EOL>fill_tuple=fill_tuple)]<EOL><DEDENT><DEDENT>if sl_type in ('<STR_LIT>', '<STR_LIT>'):<EOL><INDENT>blknos = self._blknos[slobj]<EOL>blklocs = self._blklocs[slobj]<EOL><DEDENT>else:<EOL><INDENT>blknos = algos.take_1d(self._blknos, slobj, fill_value=-<NUM_LIT:1>,<EOL>allow_fill=allow_fill)<EOL>blklocs = algos.take_1d(self._blklocs, slobj, fill_value=-<NUM_LIT:1>,<EOL>allow_fill=allow_fill)<EOL><DEDENT>blocks = []<EOL>for blkno, mgr_locs in libinternals.get_blkno_placements(blknos,<EOL>self.nblocks,<EOL>group=True):<EOL><INDENT>if blkno == -<NUM_LIT:1>:<EOL><INDENT>fill_value = fill_tuple[<NUM_LIT:0>]<EOL>blocks.append(self._make_na_block(placement=mgr_locs,<EOL>fill_value=fill_value))<EOL><DEDENT>else:<EOL><INDENT>blk = self.blocks[blkno]<EOL>if not blk._can_consolidate:<EOL><INDENT>for mgr_loc in mgr_locs:<EOL><INDENT>newblk = blk.copy(deep=True)<EOL>newblk.mgr_locs = slice(mgr_loc, mgr_loc + <NUM_LIT:1>)<EOL>blocks.append(newblk)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>blocks.append(blk.take_nd(blklocs[mgr_locs.indexer],<EOL>axis=<NUM_LIT:0>, new_mgr_locs=mgr_locs,<EOL>fill_tuple=None))<EOL><DEDENT><DEDENT><DEDENT>return blocks<EOL>
Slice/take blocks along axis=0.

Overloaded for SingleBlock

Returns
-------
new_blocks : list of Block