Существуют два способа установки значений структурированного массива - назначать значения по полю (что вы делаете) и использовать список кортежей, которые я продемонстрирую:
In [180]: all_content
Out[180]:
{'SYM': ['this_string', 'this_string', 'this_string'],
'DATE': ['NaN', 'NaN', 'NaN'],
'YEST': ['NaN', 'NaN', 'NaN'],
'other_DATE': ['NaN', 'NaN', 'NaN'],
'SIZE': ['NaN', 'NaN', 'NaN'],
'ACTIVITY': ['2019-09-27 14:18:28.000700 UTC',
'2019-09-27 14:18:28.000700 UTC',
'2019-09-27 14:18:28.000600 UTC']}
Makeмассив dtype объекта, в основном для удобства индексации 'column'.
In [181]: arr = np.array(list(all_content.items()))
In [182]: arr
Out[182]:
array([['SYM', list(['this_string', 'this_string', 'this_string'])],
['DATE', list(['NaN', 'NaN', 'NaN'])],
['YEST', list(['NaN', 'NaN', 'NaN'])],
['other_DATE', list(['NaN', 'NaN', 'NaN'])],
['SIZE', list(['NaN', 'NaN', 'NaN'])],
['ACTIVITY',
list(['2019-09-27 14:18:28.000700 UTC', '2019-09-27 14:18:28.000700 UTC', '2019-09-27 14:18:28.000600 UTC'])]],
dtype=object)
Определите dtype - как вы, или с помощью:
In [183]: dt = np.dtype(list(zip(arr[:,0],['O']*arr.shape[0])))
In [184]: dt
Out[184]: dtype([('SYM', 'O'), ('DATE', 'O'), ('YEST', 'O'), ('other_DATE', 'O'), ('SIZE', 'O'), ('ACTIVITY', 'O')])
Список 'transpose' создает списоккортежей:
In [185]: list(zip(*arr[:,1]))
Out[185]:
[('this_string', 'NaN', 'NaN', 'NaN', 'NaN', '2019-09-27 14:18:28.000700 UTC'),
('this_string', 'NaN', 'NaN', 'NaN', 'NaN', '2019-09-27 14:18:28.000700 UTC'),
('this_string', 'NaN', 'NaN', 'NaN', 'NaN', '2019-09-27 14:18:28.000600 UTC')]
Этот список подходит для ввода данных:
In [186]: np.array(list(zip(*arr[:,1])),dtype=dt)
Out[186]:
array([('this_string', 'NaN', 'NaN', 'NaN', 'NaN', '2019-09-27 14:18:28.000700 UTC'),
('this_string', 'NaN', 'NaN', 'NaN', 'NaN', '2019-09-27 14:18:28.000700 UTC'),
('this_string', 'NaN', 'NaN', 'NaN', 'NaN', '2019-09-27 14:18:28.000600 UTC')],
dtype=[('SYM', 'O'), ('DATE', 'O'), ('YEST', 'O'), ('other_DATE', 'O'), ('SIZE', 'O'), ('ACTIVITY', 'O')])
Вы можете упростить получение количества ключей / полей с помощью:
In [187]: len(all_content)
Out[187]: 6
Другой способ получить количество «записей» - это
In [188]: first,*rest=all_content.values()
In [189]: first
Out[189]: ['this_string', 'this_string', 'this_string']
Ваш next(iter...)
, вероятно, такой же хороший.