【发布时间】:2017-08-23 01:41:59
【问题描述】:
我的数据结构是 numpy 数组的字典,看起来像这样:
metric_one =
{0: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
1: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
2: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
3: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}
metric_two =
{0: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
1: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
2: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
3: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])}
带有以下标签:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
我想要一个如下所示的数据框:
0 1 2 3
a 0 0 0 0
b 1 1 1 1
c 2 2 2 2
d 3 3 3 3
e 4 4 4 4
f 5 5 5 5
g 6 6 6 6
h 7 7 7 7
i 8 8 8 8
j 9 9 9 9
a 0 0 0 0
b 1 1 1 1
c 2 2 2 2
d 3 3 3 3
e 4 4 4 4
f 5 5 5 5
g 6 6 6 6
h 7 7 7 7
i 8 8 8 8
j 9 9 9 9
我可以通过将每个字典转换为数据帧然后用 pd.concat() 连接它们来做到这一点。但是,这真的很慢,尤其是当要连接的字典增长时(我需要连接大约 20 个)。从分析来看,似乎在连接之前创建单个数据帧实际上花费了大部分时间。因此我想知道是否有更好的方法来做到这一点,例如以一种智能的方式将字典重新排列成一个包含所有字典的大数据结构(可能在一个列表中?可能在一个大字典中?),这样我们就可以通过将这个大数据结构传递给构造函数,只构建一个数据帧。
谢谢!
【问题讨论】:
标签: python performance pandas dictionary dataframe