大Pandas多指标分组平均值

2024-06-25 06:13:25 发布

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

我有一个Groupby对象叫做GradeGroup。这是一个多指标分组,按“等级”,然后按“炉号”。Dataframe中有一列“Ontime”,我将显示该列的最大值,如下所示:

    GradeGroup.Ontime.max()

    Grade       HeatNumber
    150HP       19258             45.8
                19259             45.3
                19260             35.6
                19280             46.0
                19281             50.0
                19282             46.1
                19283             39.5
    A100C       19187             47.0
                19243             39.8
                19244             40.5
                19245             37.1
    A100X       19261             50.7
    LOWO2A100   19215             42.0
                19216             40.5
                19217             38.4
                19237             44.8
                19238             43.7
                19239             42.7
                19240             42.5
                19241             45.4
                19262             43.4
                19263             42.9
                19264             43.5

我怎样才能得到每个等级的“准时”最大值的平均值,这样150级的“准时”平均值(最大值)是(45.8+45.3+35.6+46.0+50.0+46.1+39.5)/7或44.0。我在找这样的东西:

^{pr2}$

Tags: 对象dataframe指标max平均值gradegroupbypr2
2条回答

您可以使用groupby()agg()和{}:

df.groupby(['Grade','HeatNumber']).agg({'Ontime': 'max'}).mean(level=0)

下面是一个工作示例:

df = pd.DataFrame({'Grade': ['150HP', '150HP', '150HP', 'A100C', 'A100C', 'A100X', 'A100X', 'A100X', 'LOWO2A100'], 
                   'HeatNumber': ['19258', '19258', '19260','19187', '19787', '19261', '19261', '19237', '19262'],
                   'Ontime': [45.8,  39.5, 42.8, 31.6, 65.5, 25.4, 65.1, 21.5, 32.4]})

给出:

^{pr2}$

应用上一行:

           Ontime
Grade            
150HP       44.30
A100C       48.55
A100X       43.30
LOWO2A100   32.40

再次使用max,但要有一个level参数

GradeGroup.Ontime.max().mean(level=0)

相关问题 更多 >