我目前有一个看起来像这样的数据框:
Postal Code Risk Category % of Restaurants
Low 15
11111 Med 60
High 25
Low 30
22222 Med 20
High 50
我有2个问题
Postal Code Risk Category % of Restaurants. %High Risk
Low 15
11111 Med 60 25
High 25
Low 30
22222 Med 20 50
High 50
答案 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