【问题标题】:How to use pandas groupby to calculate percentage of total in each column如何使用pandas groupby计算每列总数的百分比
【发布时间】:2020-09-14 06:38:32
【问题描述】:

我有一个包含 4 列的数据框:id、color、flag_1 和 flag_2:

df = pd.DataFrame({'id': range(0,5),
                   'color': ['red', 'red', 'blue', 'blue', 'blue'],
                   'flag_1':[1, 0, 0, 0, 0],
                  'flag_2':[1, 1, 1, 1, 0]})

与这个问题不同:Pandas percentage of total with groupby,我想按列颜色分组并获得 both、flag_1 和 flag_2 的总百分比。

结果应该类似于这个数据框:

color    flag_1  flag_2
red       0.5     1
blue       0     0.67

我似乎无法弄清楚如何根据我的需要调整来自仅聚合一列的引用问题的代码。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    试试crosstab:

    m = df.drop("id", axis=1).melt("color")
    pd.crosstab(m.color, m.variable, m.value, aggfunc="mean").rename_axis(None)
    
    
    variable    flag_1  flag_2
    blue         0.0    0.666667
    red          0.5    1.000000
    

    坚持groupby:

    df.groupby("color", sort=False).agg(flag1=("flag_1", "mean"), flag2=("flag_2", "mean"))
    
    
           flag1    flag2
    color       
    red     0.5     1.000000
    blue    0.0     0.666667
    

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 2022-11-21
      相关资源
      最近更新 更多