gpt4 book ai didi

python - 随着时间的推移更新 pandas 的胜率

转载 作者:行者123 更新时间:2023-12-02 23:12:06 25 4
gpt4 key购买 nike

所以我有一个看起来像这样的表格,我想计算每场比赛后的胜率。因此,对于玩家 1,胜率将从他赢得第一场比赛后的 100% 开始,然后是他输掉第二场比赛后的 50%,然后是 33%,然后再次回到 50%。

PlayerId     Status
1 1
1 0
1 0
1 1

所以决赛 table 看起来像这样

PlayerId     Status     Win_Rate
1 1 100%
1 0 50%
1 0 33%
1 1 50%

最佳答案

您可以.groupby PlayerId并使用expanding().mean():

In [12]: df.groupby("PlayerId").expanding().mean()
Out[12]:
PlayerId Status
PlayerId
1 0 1.0 1.000000
1 1.0 0.500000
2 1.0 0.333333
3 1.0 0.500000
2 4 2.0 1.000000
5 2.0 0.500000
6 2.0 0.333333
7 2.0 0.500000

如果您希望将其放在原始框架上,您可以删除索引级别并将其分配为列:

In [18]: df['Win_Rate'] = df.groupby("PlayerId").expanding().mean()['Status'].droplevel(0)

In [19]: df
Out[19]:
PlayerId Status Win_Rate
0 1 1 1.000000
1 1 0 0.500000
2 1 0 0.333333
3 1 1 0.500000
4 2 1 1.000000
5 2 0 0.500000
6 2 0 0.333333
7 2 1 0.500000

如果您希望它作为字符串百分比,您可以进行额外的格式化:

In [25]: df['Win_Rate'] = df['Win_Rate'].mul(100).apply(lambda x: '{}%'.format(int(x)))

In [26]: df
Out[26]:
PlayerId Status Win_Rate
0 1 1 100%
1 1 0 50%
2 1 0 33%
3 1 1 50%
4 2 1 100%
5 2 0 50%
6 2 0 33%
7 2 1 50%

关于python - 随着时间的推移更新 pandas 的胜率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58828690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com