【发布时间】:2023-03-23 10:56:01
【问题描述】:
我想将带有维度描述的 numpy nd 数组转换为 pandas 数据框。 以下解决方案有效,但对于 360000 行似乎有点慢(在我的机器上为 1.5 秒,您的结果可能会有所不同)。
import pandas as pd
import numpy as np
from itertools import product
import time
# preparation of data
nd_data = np.random.random((5, 3, 100, 10, 4, 6))
dimension_descriptions = {
'floaty': [0.1,0.2,0.3,0.4,0.5],
'animal': ['ducks', 'horses', 'elephants'],
'ramp': range(100),
'another_ramp': range(10),
'interesting number': [12, 15, 29, 42],
'because': ['why', 'is', 'six', 'afraid', 'of', 'seven']
}
t_start = time.time()
# create dataframe from list of dictionairies containing data and permuted descriptions
df = pd.DataFrame([{**{'data': data}, **dict(zip(dimension_descriptions.keys(), permuted_description))}
for data, permuted_description in zip(nd_data.flatten(), product(*dimension_descriptions.values()))])
print(f'elapsed time: {time.time()- t_start:.1f}s')
有没有更快的方法来达到同样的效果?
【问题讨论】:
-
除了使用 Cythong 或 Numba 之外,如果有更快的方法,我会感到惊讶。
(360000, 7)很大...
标签: python pandas dataframe numpy numpy-ndarray