Вы можете сделать это с помощью NumPy структурированных массивов .Я создам DataFrame только с 2 строками и 2 столбцами, похожими на ваши, чтобы продемонстрировать, как вы можете сделать это с любым размером DataFrame.
import Pandas as pd
import Numpy as np
df = pd.DataFrame({'High': [2509.629883, 2504.409912],
'Volume': [5585780000, 7609010000]},
index=np.array(['2018-12-20', '2018-12-21'], dtype='datetime64'))
Затем вы создадите пустой массив NumPy, определяющий, какой тип данных должен содержать каждый столбец.иметь.В моем примере у меня только 2 строки, поэтому массив будет иметь только 2 строки следующим образом:
array = np.empty(2, dtype={'names':('col1', 'col2', 'col3'),
'formats':('datetime64[D]', 'f8', 'i8')})
array['col1'] = df.index
array['col2'] = df['High']
array['col3'] = df['Volume']
, и массив будет выглядеть так:
array([('2018-12-20', 2509.629883, 5585780000),
('2018-12-21', 2504.409912, 7609010000)],
dtype=[('col1', '<M8[D]'), ('col2', '<f8'), ('col3', '<i8')])
Вы также можете создатьnp.recarray
класс с помощью команды np.rec.array
.Это почти идентично со структурированными массивами с одной дополнительной функцией.Вы можете получить доступ к полям как к атрибутам, то есть array.col1
вместо array['col1']
.Тем не менее, массивные массивы записей, по-видимому, медленнее, чем структурированные массивы!