每只Pandas的平均体重是多少?

2024-10-01 19:33:27 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想找到以“厚”作为权重的等级的平均权重。问题是,每次成绩显示时,我都需要这样做>;连续为0,如果连续为0,我仍然希望找到它的平均重量,尽管它肯定为0

下表列出了我想要找到的结果。如您所见,总厚度和WA(重量平均值)上有几个空值/NaN。空值上面的每个值都表示我需要查找的每个组的WA

基本上,我需要根据它的等级进行分组(要么全部为0,要么全部>;0)然后我需要找到每个组的平均重量


BHID           Thick    Total Thickness Grade   WA
01/01/1970  2   2.5         0   0
01/01/1970  0.5             0   
01/01/1970  0.5 2.5         3.35    0.71
01/01/1970  2               0.05    
01/01/1970  0.8 1.5         0   0
01/01/1970  0.7             0   
01/02/1970  2   4           3.3 4.075
01/02/1970  0.5             2.8 
01/02/1970  0.5             0   
01/02/1970  1               8.3 
01/02/1970  1.7 2.3         0   0
01/02/1970  0.6             0   

注: 您可能会注意到,在1970年2月1日,它的等级上有一个单独的0,但它不是连续的,因此不算作新的组。因此,只有5组具有5个WA值(0,0.71,0,4.075,0)

我尝试使用BHID进行分组,并设法找到每个BHID的wavg(加权平均值),非常好

               wavg
BHID                
1970-01-01  0.273077
1970-02-01  2.587302

但当我尝试按分数分组时,它肯定只是按唯一的分数值分组,这不是我想要的。我试着按年级范围分组

                  wavg
BHID       Grade      
1970-01-01 0.00   0.00
           3.35   3.35
           0.05   0.05
1970-02-01 3.30   3.30
           2.80   2.80
           0.00   0.00
           8.30   8.30

这是我使用的代码

def my_agg(x):
    names = np.average(x['Grade'],weights=x['Thick'],axis=0)
    return pd.Series(names,index=['wavg'])

print(df1.groupby(['BHID','Grade'],sort=False,).apply(my_agg))

我只是想知道如何根据成绩范围从groupby中找到平均体重


Tags: gtnamesmyagg平均值权重grade空值
1条回答
网友
1楼 · 发布于 2024-10-01 19:33:27

我明白了,我必须利用机器学习进行分类(我使用Sklearn树),然后我最终可以根据树分类的结果使用groupby

def my_agg(x):
    names = np.average(x['Sn (kg/m3)'],weights=x['Thick'],axis=0)
    return pd.Series(names,index=['wavg'])

def my_thick(x):
    tot_thick = np.sum(x['Thick'],axis=0)
    return pd.Series(tot_thick,index=['Thick Sumz'])

相关问题 更多 >

    热门问题