Skip to main content
 首页 » 编程设计

python之如何按组计算两列值的比率

2025年05月04日13luoye11

我有一个像这样的 pandas 数据框的航类列表:

airline        status          number    ... 
 
Aer Lingus     some error A        14    ... 
Aeroflot       success             47    ... 
Air Canada     success              2    ... 
Air Dolomiti   success              2    ... 
Air Europa     some error B         4    ... 
Air France     success             40    ... 
Alitalia       some error A        10    ... 
.... 

我为每次成功或出错的航类调用一些 API。

我想要的是每家航空公司的成功率。所以我知道我可以使用 groupby 计算“airline”和“status”列中值的出现次数,但我无法计算值的比率。

def calculate_quote_success_ratios(flights): 
 
    success_ratio_per_airline = flights.groupby(['airline', 'status']).count() 
    # TODO: Include ratio with failures! 
 
    return success_ratio_per_airline 

预期的输出应该是这样的:

airline        success_ratio 
 
Aer Lingus     0.72 
Aeroflot       0.845 
Air Canada     0.935 
Air Dolomiti   0.5 
Air Europa     ... 
.... 

编辑:明确地说,df['numbers'] 列不相关。所以我只想计算每家航空公司“成功”与各种错误的百分比。

请您参考如下方法:

航类数量的分组计数

count_flight=df.groupby('airline').status.count() 

分组成功次数

count_success=df[df['status']=='success'].groupby('airline').status.count() 

pandas div 返回前两个数据帧的分组比率。

count_success.div(count_flight).fillna(0)