title: My imputer from datawig library is giving Type-error
body: <p>I have been working on a kaggle competition named as Titanic-spaceship. I had been trying to get my hands dirty to use sophisticated techniques to impute missing values. I had been trying to impute missing value of a categorical column named Cabin using datawig SimpleImputer but it is giving me an error. My dataset is as follows:</p>
  <pre><code>dataset.tail(555)
  </code></pre>
  <p><a href="https://i.stack.imgur.com/1qYwp.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/1qYwp.png" alt="enter image description here" /></a></p>
  <p>I have used following code for splitting training and testing dataset in order to able to train on datawig SimpleImputer:</p>
  <pre><code>import datawig
  
  dataset_Cabin_train = dataset[dataset[&quot;Cabin&quot;].isnull()==False]
  dataset_Cabin_test = dataset[dataset[&quot;Cabin&quot;].isnull()==True]
  Cabins_train_columsn = dataset_Cabin_train.columns.drop(&quot;Cabin&quot;)
  dataset_Cabin_train[&quot;Cabin&quot;]
  imputer = datawig.SimpleImputer(input_columns=Cabins_train_columsn,output_column=&quot;Cabin&quot;)
  imputer.fit(dataset_Cabin_train)
  </code></pre>
  <p>However it is giving me the following error on fitting the following dataset:</p>
  <hr />
  <p>TypeError                                 Traceback (most recent call last)
  ~\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in _na_arithmetic_op(left, right, op, is_cmp)
  165     try:
  --&gt; 166         result = func(left, right)
  167     except TypeError:</p>
  <p>~\Anaconda3\lib\site-packages\pandas\core\roperator.py in radd(left, right)
  8 def radd(left, right):
  ----&gt; 9     return right + left
  10</p>
  <pre><code>TypeError: can only concatenate str (not &quot;bool&quot;) to str
  
  During handling of the above exception, another exception occurred:
  
  TypeError                                 Traceback (most recent call last)
  &lt;ipython-input-42-743c6e627a27&gt; in &lt;module&gt;
        1 imputer = datawig.SimpleImputer(input_columns=Cabins_train_columsn,output_column=&quot;Cabin&quot;)
  ----&gt; 2 imputer.fit(dataset_Cabin_train)
  
  ~\Anaconda3\lib\site-packages\datawig\simple_imputer.py in fit(self, train_df, test_df, ctx, learning_rate, num_epochs, patience, test_split, weight_decay, batch_size, final_fc_hidden_units, calibrate, class_weights, instance_weights)
      388                                         weight_decay, batch_size,
      389                                         final_fc_hidden_units=final_fc_hidden_units,
  --&gt; 390                                         calibrate=calibrate)
      391         self.save()
      392 
  
  ~\Anaconda3\lib\site-packages\datawig\imputer.py in fit(self, train_df, test_df, ctx, learning_rate, num_epochs, patience, test_split, weight_decay, batch_size, final_fc_hidden_units, calibrate)
      261             train_df, test_df = random_split(train_df, [1.0 - test_split, test_split])
      262 
  --&gt; 263         iter_train, iter_test = self.__build_iterators(train_df, test_df, test_split)
      264 
      265         self.__check_data(test_df)
  
  ~\Anaconda3\lib\site-packages\datawig\imputer.py in __build_iterators(self, train_df, test_df, test_split)
      594             data_columns=self.data_encoders,
      595             label_columns=self.label_encoders,
  --&gt; 596             batch_size=self.batch_size
      597         )
      598 
  
  ~\Anaconda3\lib\site-packages\datawig\iterators.py in __init__(self, data_frame, data_columns, label_columns, batch_size)
      238                 column_encoder.fit(data_frame)
      239 
  --&gt; 240         self.df_iterator = self.mxnet_iterator_from_df(data_frame)
      241         self.df_iterator.reset()
      242         self._provide_data = self.df_iterator.provide_data
  
  ~\Anaconda3\lib\site-packages\datawig\iterators.py in mxnet_iterator_from_df(self, data_frame)
      106         data = {}
      107         for col_enc in self.data_columns:
  --&gt; 108             data_array_numpy = col_enc.transform(data_frame)
      109             data[col_enc.output_column] = mx.nd.array(data_array_numpy[:n_samples, :])
      110             logger.debug(&quot;Data Encoding - Encoded {} rows of column \
  
  ~\Anaconda3\lib\site-packages\datawig\column_encoders.py in transform(self, data_frame)
      610             for col in self.input_columns:
      611                 if self.prefixed_concatenation:
  --&gt; 612                     tmp_col += col + &quot; &quot; + data_frame[col].fillna(&quot;&quot;) + &quot; &quot;
      613                 else:
      614                     tmp_col += data_frame[col].fillna(&quot;&quot;) + &quot; &quot;
  
  ~\Anaconda3\lib\site-packages\pandas\core\ops\common.py in new_method(self, other)
       67         other = item_from_zerodim(other)
       68 
  ---&gt; 69         return method(self, other)
       70 
       71     return new_method
  
  ~\Anaconda3\lib\site-packages\pandas\core\arraylike.py in __radd__(self, other)
       94     @unpack_zerodim_and_defer(&quot;__radd__&quot;)
       95     def __radd__(self, other):
  ---&gt; 96         return self._arith_method(other, roperator.radd)
       97 
       98     @unpack_zerodim_and_defer(&quot;__sub__&quot;)
  
  ~\Anaconda3\lib\site-packages\pandas\core\series.py in _arith_method(self, other, op)
     5524 
     5525         with np.errstate(all=&quot;ignore&quot;):
  -&gt; 5526             result = ops.arithmetic_op(lvalues, rvalues, op)
     5527 
     5528         return self._construct_result(result, name=res_name)
  
  ~\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in arithmetic_op(left, right, op)
      222         _bool_arith_check(op, left, right)
      223 
  --&gt; 224         res_values = _na_arithmetic_op(left, right, op)
      225 
      226     return res_values
  
  ~\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in _na_arithmetic_op(left, right, op, is_cmp)
      171             # Don't do this for comparisons, as that will handle complex numbers
      172             #  incorrectly, see GH#32047
  --&gt; 173             result = _masked_arith_op(left, right, op)
      174         else:
      175             raise
  
  ~\Anaconda3\lib\site-packages\pandas\core\ops\array_ops.py in _masked_arith_op(x, y, op)
      129 
      130         if mask.any():
  --&gt; 131             result[mask] = op(xrav[mask], y)
      132 
      133     np.putmask(result, ~mask, np.nan)
  
  ~\Anaconda3\lib\site-packages\pandas\core\roperator.py in radd(left, right)
        7 
        8 def radd(left, right):
  ----&gt; 9     return right + left
       10 
       11 
  
  TypeError: can only concatenate str (not &quot;bool&quot;) to str
  </code></pre>
  <p>Can anyone tell me what I am doing wrong. Thanks!!!!</p>