将汇总函数应用于所有值

时间:2019-12-18 13:19:14

标签: pandas

我有一个这样的DataFrame

   Earns1 Earns2 Earns3
0    10     10     30
1    20     20     30
2    10     20     30

我想计算所有9个值的平均值(即,同时在行和列上分别应用聚合函数)。我可以融化它,只在value列上进行操作,但是感到奇怪的是,这是最好的方法。有任何想法吗?也许套用地图?

Expected result: 20 (mean of [10, 20, 10, 10, 20, 20, 30, 30, 30])

编辑:我忘了解释这一点,它的想法是多次执行,可能对整个数据框使用groupby(by =“ Class_column”)而不是一次。

祝你有美好的一天:)

3 个答案:

答案 0 :(得分:3)

将值转换为numpy数组,然后使用mean

a = df.to_numpy().mean()
#older pandas versions
#a = df.values.mean()
print (a)
20.0

编辑:您可以将GroupBy.apply与lambda函数结合使用来解决每个组的问题:

print (df)
   Earns1  Earns2  Earns3 Class_column
0      10      10      30            a
1      20      20      30            b
2      10      20      30            b

df  = (df.groupby(by="Class_column")
         .apply(lambda x: x.to_numpy().mean())
         .reset_index(name='aggregated'))
print (df)
  Class_column  aggregated
0            a   16.666667
1            b   21.666667

答案 1 :(得分:0)

假设您的数据帧称为df

df.mean().mean()

答案 2 :(得分:0)

尝试一下:

Earns1=[10,20,10]. # creation of data frame
Earns2=[10,20,20]
Earns3=[30,30,30]
df = pd.DataFrame({'Earns1':Earns1,'Earns2':Earns2,'Earns3':Earns3})


df=df.to_numpy().transpose().reshape(df.size,order='C') # converting from 2D array to 1D array
print('result: {} (mean of {})'.format(df.mean(),list(df))) # printing result

您有什么问题吗?