In [56]: data = [
...: (1, (5., 3., 7.), 6),
...: (2, (2., 1., 3.), 9),
...: (3, (3., 8., 4.), 3),
...: (4, (1., 7., 4.), 2),
...: ]
...: dtype = [('A', '<i8'), ('B', '<f8', (3,)), ('C', '<i8')]
...: arr = np.array(data, dtype=dtype)
In [57]: arr
Out[57]:
array([(1, [5., 3., 7.], 6), (2, [2., 1., 3.], 9), (3, [3., 8., 4.], 3),
(4, [1., 7., 4.], 2)],
dtype=[('A', '<i8'), ('B', '<f8', (3,)), ('C', '<i8')])
Похоже, что newi sh structure_to_unstructured
может обработать этот тип d:
In [59]: import numpy.lib.recfunctions as rf
In [60]: rf.structured_to_unstructured(arr)
Out[60]:
array([[1., 5., 3., 7., 6.],
[2., 2., 1., 3., 9.],
[3., 3., 8., 4., 3.],
[4., 1., 7., 4., 2.]])
, затем создать кадр данных обычным способом.
In [63]: pd.DataFrame(_60, columns=['A','B1','B2','B3','C'])
Out[63]:
A B1 B2 B3 C
0 1.0 5.0 3.0 7.0 6.0
1 2.0 2.0 1.0 3.0 9.0
2 3.0 3.0 8.0 4.0 3.0
3 4.0 1.0 7.0 4.0 2.0
и добавить в столбце dtypes
In [74]: df = pd.DataFrame(_60, columns=['A','B1','B2','B3','C'])
In [75]: df['A']=df['A'].astype(int)
In [76]: df['C']=df['C'].astype(int)
In [77]: df
Out[77]:
A B1 B2 B3 C
0 1 5.0 3.0 7.0 6
1 2 2.0 1.0 3.0 9
2 3 3.0 8.0 4.0 3
3 4 1.0 7.0 4.0 2