我目前有一个类似于以下内容的dataframe:
Postal Code Risk Category % of Restaurants
Low 15
11111 Med 60
High 25
Low 30
22222 Med 20
High 50 我有两个问题
如何返回高风险类别餐厅中最高百分比的邮政编码(在本例中,它将返回邮政编码2222,因为它有50%的高风险类别restaurants)
Postal Code Risk Category % of Restaurants. %High Risk
Low 15
11111 Med 60 25
High 25
Low 30
22222 Med 20 50
High 50 发布于 2020-09-26 05:51:53
按Postal Code分组并得到% of Restaurants,其中Risk Category为“High”。然后在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.0https://stackoverflow.com/questions/64073087
复制相似问题