代码之家  ›  专栏  ›  技术社区  ›  Lynn

按两列分组,并使用Python中的平均分类计数

  •  0
  • Lynn  · 技术社区  · 3 年前

    我想按两列分组,并用Python计算平均分类计数

    (我们看到,截至2022年2月1日,纽约州持有3个苹果,华盛顿州持有4个樱桃,德克萨斯州持有3份bbq——现在我们取这3个容器的平均值。)

    数据

    CONTAINER   CLOUDS   DATE
    NY          apple    2/1/2022
    NY          apple    2/1/2022
    NY          apple    2/1/2022
    WA          cherries 2/1/2022
    WA          cherries 2/1/2022
    WA          cherries 2/1/2022
    WA          cherries 2/1/2022
    TX          bbq      2/1/2022
    TX          bbq      2/1/2022
    TX          bbq      2/1/2022
    TX          bbq      3/1/2022
    TX          bbq      3/1/2022
    

    渴望的

    AVG CLOUDS PER CONTAINER:  ~3.333
    

    正在执行

    df = df.groupby('CONTAINER', 'DATE') \
    .agg({'CLOUDS':'size', 'CLOUDS':'mean'}) \
    .reset_index()
    

    欢迎提出任何建议

    0 回复  |  直到 3 年前
        1
  •  2
  •   Derek O    3 年前

    我想你可以在 'CONTAINER','DATE' 并获得 size 对于每个类别,然后在 'DATE' 单独计算平均值:

    df.groupby(['CONTAINER','DATE']).agg({'CLOUDS':'size'}).reset_index().groupby('DATE').agg({'CLOUDS':'mean'}).reset_index()
    

    结果:

           DATE    CLOUDS
    0  2/1/2022  3.333333
    1  3/1/2022  2.000000
    
        2
  •  2
  •   Code Different    3 年前

    我有点不清楚你想要什么。如果您只对2022年2月1日的集装箱感兴趣:

    # Measure container size on 2/1/2022 only
    cond = df["DATE"] == "2/1/2022"
    output = df[cond].groupby("CONTAINER").size()
    
    # Take the average of all containers' sizes
    output["AVG"] = output.mean()