code: def min(df: "DataFrame") -> "pd.Series":
      data_manager = df.data_manager
      operable_blocks = data_manager.infer_operable_blocks()
  
      def _mapper(blocks, op_bids):
          ret = []
          for bid in op_bids:
              if isinstance(blocks[bid], torch.Tensor):
                  ret.append(blocks[bid].min(axis=0).values)
              else:
                  ret.append(blocks[bid].min(axis=0))
  
          return ret
  
      def _reducer(blocks1, blocks2):
          ret = []
          for block1, block2 in zip(blocks1, blocks2):
              if isinstance(block1, torch.Tensor):
                  ret.append(torch.minimum(block1, block2))
              else:
                  ret.append(np.minimum(block1, block2))
  
          return ret
  
      mapper_func = functools.partial(_mapper, op_bids=operable_blocks)
  
      reduce_ret = df.block_table.mapValues(mapper_func).reduce(
          _reducer
      )
      return _post_process(reduce_ret, operable_blocks, data_manager)
  
file_path: FATE/python/fate/arch/dataframe/ops/_stat.py
imports: import functools
  import numpy
  import pandas
  import torch
  from .._dataframe import DataFrame
  from ..manager import DataManager
label_desc: Use image node_id 1 for calling a global function with example usage: min(df) and returns: _post_process, ret, ret