【问题标题】:how to convert the whole DataFrame values into mean values? [duplicate]如何将整个 DataFrame 值转换为平均值? [复制]
【发布时间】: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 等)。那么有人可以帮忙吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以对索引进行楼层划分,然后进行 groupby 和 mean:

    df.groupby(df.index//4).mean()
    

    如果index 不是range 索引,请执行以下操作:

    out = df.reset_index()
    out.drop("index",1).groupby(out.index//4).mean()
    

    或者,

    df.groupby(np.arange(len(df)) // 4).mean()
    

        Gen1    Gen2    Gen3   Gen4
    0  24.75  121.00   50.00  27.25
    1  36.00   21.25   32.75  35.50
    2  70.00   46.25   52.25  25.75
    3  46.50   26.75  273.50  32.50
    4  40.25   24.75   38.25  95.50
    

    看看这个答案:Calculate average of every x rows in a table and create new table

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 2018-03-26
      • 1970-01-01
      • 2013-09-12
      相关资源
      最近更新 更多