1

I am loading data from a MATLAB .mat file into python. The .mat file has a number of cells, and within each cell is a struct with several named fields:

samp = 1x2 cell array
{1×1 struct}    {1×1 struct}

samp{1}.buttonID = 3
samp{1}.buttonName = 'name3'

I have loaded the .mat file into python using scipy.io.loadmat(), from which I got this ndarray object:

In [112]: data
Out[113]: 
array([[array([[(array([[3]], dtype=uint8), array(['name3'], dtype='<U10'))]],
      dtype=[('buttonID', 'O'), ('buttonName', 'O')]),
        array([[(array([[1]], dtype=uint8), array(['name1'], dtype='<U6'))]],
      dtype=[('buttonID', 'O'), ('buttonName', 'O')])]], dtype=object)

I have read some articles on how to turn an ndarray into a pandas dataframe, but my confusion is that python has stored the fieldnames ('buttonID' and 'buttonName') with the dtype. How can I pass these names into DataFrame() to correctly store the data?

The goal:

'' 'buttonID' 'buttonName'
0   3         'name3'
1   1         'name1'
Dev-iL
  • 23,742
  • 7
  • 57
  • 99
j45612
  • 362
  • 1
  • 5
  • 17

0 Answers0