pandas如何统计列值出现次数并除以另一列求和值计算英雄联盟英雄胜率
实现步骤
- 若你目前的胜负结果列如果是文本类标识,先转为可计算的数值格式,将获胜映射为1、失败映射为0:
# 替换代码中对应字段为你实际的列名和获胜对应取值即可 df['is_win'] = df['你的胜负结果列名'].apply(lambda x: 1 if x == '获胜标识' else 0)
如果你的胜负列本身就是1/0的数值格式,可直接跳过这一步。
- 按上场英雄列分组,对胜负结果列求和得到每个英雄的总胜场数:
# 替换为你实际的上场英雄列名 win_total = df.groupby('上场英雄列名')['is_win'].sum()
- 匹配你已经统计好的英雄出场次数,合并计算胜率:
# 你已完成的出场次数统计 appear_total = df['上场英雄列名'].value_counts() # 合并统计结果生成新表 stat_df = pd.DataFrame({ '出场次数': appear_total, '胜场数': win_total }) # 计算胜率,保留2位小数转为百分比格式 stat_df['胜率(%)'] = (stat_df['胜场数'] / stat_df['出场次数'] * 100).round(2)
注意:你问题中描述的“出场次数除以获胜总场次得到胜率”为表述错误,实际胜率应为胜场数除以出场次数,上述代码已按正确逻辑实现,若确实需要反向计算可自行修改除法顺序。
- 可选操作:按胜率从高到低排序,追加如下代码即可
stat_df = stat_df.sort_values('胜率(%)', ascending=False)
内容的提问来源于stack exchange,提问作者Jrblack
相关产品推荐
相关产品推荐

