title: python pandas dataframe to matlab struct using scipy.io
body: <p>I am trying to save a pandas dataframe to a matlab .mat file using scipy.io.</p>
  
  <p>I have the following:</p>
  
  <pre><code>array1 = np.array([1,2,3])
  array2 = np.array(['a','b','c'])
  array3 = np.array([1.01,2.02,3.03])
  df = DataFrame({1:array1, 2:array2,3:array3}, index=('array1','array2','array3'))
  recarray_ = df.to_records()
  ## Produces:
  # rec.array([('array1', 1, 'a', 1.01), ('array2', 2, 'b', 2.02),
  #   ('array3', 3, 'c', 3.03)], 
  #  dtype=[('index', 'O'), ('1', '&lt;i4'), ('2', 'O'), ('3', '&lt;f8')])
  scipy.io.savemat('test_recarray_struct.mat', {'struct':df.to_records()})
  </code></pre>
  
  <p>In Matlab, I would expect this to produce a struct containing three arrays (one int, one char, one float) but it actually produces is a struct containing 3 more structs, each containing four variables; 'index', 1, '2', 3. When trying to select 1, '2' or 3 I get the error 'The variable struct(1, 1).# does not exist.'</p>
  
  <p>Can anyone explain the expected behaviour and how best to save DataFrames to .mat files?</p>