gpt4 book ai didi

python - 从字典列表创建 Dataframe,不使用 pd.concat()

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:39 25 4
gpt4 key购买 nike

我的数据结构是 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 个)。从分析来看,似乎在连接之前创建单个数据帧实际上花费了大部分时间。因此我想知道是否有更好的方法来做到这一点,例如以一种巧妙的方式将字典重新排列成一个包含所有字典的大数据结构(也许在一个列表中?也许在一个大字典中?)这样我们就可以通过将这个大数据结构传递给构造函数来只构建一个数据帧。

谢谢!

最佳答案

假设

metrics = [metric_one, metric_two]
idx = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']

仅使用 numpy

lol = [list(np.concatenate([m[i] for m in metrics])) for i in range(4)]
np.array(lol).T
pd.DataFrame(np.array(lol).T, idx * len(metrics))

朴素时间测试

enter image description here

关于python - 从字典列表创建 Dataframe,不使用 pd.concat(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43095708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com