计算熊猫中一组特定列的最大值

时间:2020-09-26 01:36:52

标签: pandas dataframe

我目前有一个看起来像这样的数据框:

Postal Code         Risk Category           % of Restaurants

                        Low                         15
   11111                Med                         60
                        High                        25

                        Low                         30
   22222                Med                         20
                        High                        50                    

我有2个问题

  1. 如何返回高风险类别餐厅中百分比最高的邮政编码(在这种情况下,因为它具有50%的高风险类别餐厅,它将返回邮政编码2222)
  2. 有没有一种方法可以创建一个标记为“%High Risk”的新列,该列显示每个邮政编码的高风险餐厅数量(对于可视化目的将很有用)。
Postal Code         Risk Category           % of Restaurants.      %High Risk
    
                        Low                         15
   11111                Med                         60                 25
                        High                        25
    
                        Low                         30
   22222                Med                         20                 50
                        High                        50   

1 个答案:

答案 0 :(得分:0)

Postal Code分组,得到% of Restaurants,其中Risk Category为“高”。然后在Postel Code

上合并结果数据框
df.merge(
    df.groupby('Postal Code')
        .apply(lambda x: x['% of Restaurants'][x['Risk Category'].eq('High')]).rename('% High Risk')
    , on='Postal Code')

出局:

   Postal Code Risk Category  % of Restaurants  % High Risk
0        11111           Low                15           25
1        11111           Med                60           25
2        11111          High                25           25
3        22222           Low                30           50
4        22222           Med                20           50
5        22222          High                50           50

绝对计数

如果% of Restaurants#(Number) of Restaurants,则可以类似地完成

df.merge(
    df.groupby('Postal Code')
        .apply(lambda x: x[x['Risk Category'].eq('High')]['% of Restaurants']/x['% of Restaurants'].sum() * 100).rename('% High Risk')
    , on='Postal Code')

出局:

   Postal Code Risk Category  # of Restaurants  % High Risk
0        11111           Low                15         25.0
1        11111           Med                60         25.0
2        11111          High                25         25.0
3        22222           Low                30         50.0
4        22222           Med                20         50.0
5        22222          High                50         50.0