【发布时间】:2021-04-15 11:07:09
【问题描述】:
所以我在 excel 中有一个生成器生成列表:
Gen1 Gen2 Gen3 Gen4
12 88 32 13
22 21 71 11
22 354 32 74
43 21 65 11
33 21 44 11
55 22 32 43
44 21 23 11
12 21 32 77
76 33 67 11
123 55 32 67
32 21 32 14
49 76 78 11
54 21 32 11
33 21 32 44
22 44 998 43
77 21 32 32
09 34 55 11
98 21 32 14
33 21 44 16
21 23 22 341
每列中有20 values,我希望每列减少到5 values,这将通过一次取4 values 的平均值来完成。所以这就像先取 1-4 个元素的平均值,然后取 5-8、9-12、13-16 和最后 17-20 个元素的平均值。
预期的输出将如下所示:
Gen1 Gen2 Gen3 Gen4
24.75 121 50 27.25
36 21.25 32.75 35.5
70 46.25 52.25 25.75
46.5 26.75 273.5 32.5
40.25 24.75 38.25 95.5
我知道如何在 python 中做到这一点,我的方法是给出我想要的确切输出:
import numpy as np
gen1 = np.array(df['Gen1'])
gen2 = np.array(df['Gen2'])
gen3 = np.array(df['Gen3'])
gen4 = np.array(df['Gen4'])
solutionArr = np.zeros((5,4))
gen1List = []
gen2List = []
gen3List = []
gen4List = []
for i in range(5):
gen1List.append(np.mean(gen1[i*4:(i+1)*4]))
gen2List.append(np.mean(gen2[i*4:(i+1)*4]))
gen3List.append(np.mean(gen3[i*4:(i+1)*4]))
gen4List.append(np.mean(gen4[i*4:(i+1)*4]))
solutionArr[:,0] = gen1List
solutionArr[:,1] = gen2List
solutionArr[:,2] = gen3List
solutionArr[:,3] = gen4List
print(solutionArr)
但我想为此使用 pandas,因为在实际数据集中,我有更多 140 个名称非常不同的生成器(不像 gen1、gen2 等)。那么有人可以帮忙吗?
【问题讨论】: