С некоторыми исправлениями эти создания структурированных массивов работают:
In [244]: dt = np.dtype([('data',object), ('freq', 'U10')])
In [245]: x = np.empty(3, dtype=dt)
In [246]: x
Out[246]:
array([(None, ''), (None, ''), (None, '')],
dtype=[('data', 'O'), ('freq', '<U10')])
или данные в виде списка кортежей:
In [247]: x = np.array([([1,2,3], 'quarterly'), ([4,5], 'yearly')], dt)
In [248]: x
Out[248]:
array([(list([1, 2, 3]), 'quarterly'), (list([4, 5]), 'yearly')],
dtype=[('data', 'O'), ('freq', '<U10')])
In [249]: x['data']
Out[249]: array([list([1, 2, 3]), list([4, 5])], dtype=object)
и со словарем JSON_DATA
:
In [251]: JSON_DATA['data']
Out[251]:
[{'Members': 29, 'period': '2020-06-30', 'TCOC': 5880070},
{'Members': 21, 'period': '2020-03-31', 'TCOC': 5689074}]
In [254]: x = np.empty(2, dt)
In [255]: x['data'] = JSON_DATA['data']
In [256]: x['freq'] = JSON_DATA['freq']
In [257]: x
Out[257]:
array([({'Members': 29, 'period': '2020-06-30', 'TCOC': 5880070}, 'quarterly'),
({'Members': 21, 'period': '2020-03-31', 'TCOC': 5689074}, 'quarterly')],
dtype=[('data', 'O'), ('freq', '<U10')])
In [258]: x['data']
Out[258]:
array([{'Members': 29, 'period': '2020-06-30', 'TCOC': 5880070},
{'Members': 21, 'period': '2020-03-31', 'TCOC': 5689074}],
dtype=object)
Элемент поля data на самом деле является словарем:
In [259]: x['data'][0]
Out[259]: {'Members': 29, 'period': '2020-06-30', 'TCOC': 5880070}