【问题标题】:average on a groupby with multiindex in pandas熊猫中具有多索引的groupby的平均值
【发布时间】:2019-02-28 02:51:52
【问题描述】:

我有一个名为 GradeGroup 的 Groupby 对象。这是一个多索引分组,按“Grade”,然后按“HeatNumber”。数据框中有一列“准时”,我正在显示该列的最大值,如下所示:

    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

如何获得“准时”最大值但每个等级的平均值,以便 150HP 等级的“准时”平均值(最大值)为 (45.8+45.3+35.6+46.0+50.0+46.1+39.5) /7 或 44.0。我正在寻找这样的东西:

Grade
    150HP                    44.0
    A100C                    41.1
    A100X                    50.7
    LOWO2A100                42.7

【问题讨论】:

  • 你能提供一个minimal reproducible example吗?从输出中构建数据框很乏味。
  • df.groupby(['Grade','HeatNumber']).agg({'Ontime': 'max'}).mean()

标签: python pandas aggregate pandas-groupby


【解决方案1】:

再次使用max,但带有level 参数

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

【讨论】:

    【解决方案2】:

    您可以使用groupby()、agg() 和mean():

    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]})
    

    给予:

           Grade HeatNumber  Ontime
    0      150HP      19258    45.8
    1      150HP      19258    39.5
    2      150HP      19260    42.8
    3      A100C      19187    31.6
    4      A100C      19787    65.5
    5      A100X      19261    25.4
    6      A100X      19261    65.1
    7      A100X      19237    21.5
    8  LOWO2A100      19262    32.4
    

    应用上面的行:

               Ontime
    Grade            
    150HP       44.30
    A100C       48.55
    A100X       43.30
    LOWO2A100   32.40
    

    【讨论】:

      猜你喜欢
      • 2019-07-27
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2023-04-07
      • 2020-04-18
      相关资源
      最近更新 更多