code: def set_field(self, field_name, data):
          
          if self.handle is None:
              raise Exception("Cannot set %s before construct dataset" % field_name)
          if data is None:
              # set to None
              _safe_call(_LIB.LGBM_DatasetSetField(
                  self.handle,
                  c_str(field_name),
                  None,
                  ctypes.c_int(0),
                  ctypes.c_int(FIELD_TYPE_MAPPER[field_name])))
              return self
          dtype = np.float32
          if field_name == 'group':
              dtype = np.int32
          elif field_name == 'init_score':
              dtype = np.float64
          data = list_to_1d_numpy(data, dtype, name=field_name)
          if data.dtype == np.float32 or data.dtype == np.float64:
              ptr_data, type_data, _ = c_float_array(data)
          elif data.dtype == np.int32:
              ptr_data, type_data, _ = c_int_array(data)
          else:
              raise TypeError("Excepted np.float32/64 or np.int32, meet type({})".format(data.dtype))
          if type_data != FIELD_TYPE_MAPPER[field_name]:
              raise TypeError("Input type error for set_field")
          _safe_call(_LIB.LGBM_DatasetSetField(
              self.handle,
              c_str(field_name),
              ptr_data,
              ctypes.c_int(len(data)),
              ctypes.c_int(type_data)))
          return self
docs: Set property into the Dataset.
  
          Parameters
          ----------
          field_name : string
              The field name of the information.
          data : list, numpy 1-D array, pandas Series or None
              The array of data to be set.
  
          Returns
          -------
          self : Dataset
              Dataset with set property.