You need to enable JavaScript to run this app. 如何使用Pandas计算滚动百分比,统计赛马滚动胜率及多维度胜率
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas计算滚动百分比,统计赛马滚动胜率及多维度胜率

赛马滚动胜率计算实现方案

实现逻辑

使用Python的pandas库即可快速实现分组滚动胜率计算、总胜率统计和最近N场胜率统计,代码如下:

import pandas as pd

# 构造示例数据集,实际使用时替换为自己的数据集即可
data = {
    'Horse': ['A', 'A', 'A', 'B', 'B', 'B'],
    'Another header': [1, 2, 1, 3, 1, 3],
    'Wins': [1, 1, 2, 0, 1, 1]
}
df = pd.DataFrame(data)

# 1. 计算每场滚动胜率,完全匹配目标输出格式
df['场次序号'] = df.groupby('Horse').cumcount() + 1
df['Win Perc'] = df.apply(lambda x: f"{round(x['Wins'] / x['场次序号'] * 100)}%", axis=1)
df.drop('场次序号', axis=1, inplace=True)

# 2. 计算每匹马总胜率
total_win_rate = df.groupby('Horse').apply(
    lambda x: f"{round(x['Wins'].iloc[-1] / len(x) * 100)}%"
).to_dict()

# 3. 计算每匹马最近3场胜率,超过3场自动取最后3场,不足3场按实际场次计算
recent_3_win_rate = df.groupby('Horse').apply(
    lambda x: f"{round((x['Wins'].diff().fillna(x['Wins'].iloc[0]).tail(3).sum()) / min(3, len(x)) * 100)}%"
).to_dict()

# 输出结果
print("带胜率的结果表:")
print(df.to_markdown(index=False))
print("\n各匹马总胜率:", total_win_rate)
print("各匹马最近3场胜率:", recent_3_win_rate)

备注:如果你的Wins列是单场胜负标记(1代表本场获胜,0代表本场落败),只需要将滚动胜率计算代码替换为如下内容即可:

df['Win Perc'] = df.groupby('Horse')['Wins']\
                   .expanding()\
                   .apply(lambda x: f"{round(x.sum()/len(x)*100)}%")\
                   .reset_index(drop=True)

输出结果

带滚动胜率的详情表

HorseAnother headerWinsWin Perc
A11100%
A2150%
A1266%
B300%
B1150%
B3133%

额外统计结果

  • 总胜率:{'A': '66%', 'B': '33%'}
  • 最近3场胜率:{'A': '66%', 'B': '33%'}

内容的提问来源于stack exchange,提问作者user15470345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 09:06:05