gpt4 book ai didi

python - 基于阈值的累计月度 YTD

转载 作者:行者123 更新时间:2023-11-28 18:27:24 27 4
gpt4 key购买 nike

我正在尝试创建一个累积的月度年初至今计算,其中基于阈值,“玩家”仅计入分子和分母一次(一旦他们有记录的分数)并且可以进入“达到阈值”组,然后即使他们后来的分数不符合阈值,他们也会留在组中。

我不确定如何称呼此模型,但希望了解有关实现或考虑此类逻辑的任何想法,以便我可以自行研究。

这是一个示例输入数据框:

 Player     Month   Score   Qualified?
A January 3 N
A February 4 Y
A March 5 Y
A April 5 Y
B January 4 Y
B February 3 N
C March 5 Y
D February 3 N
D March 4 Y
D April 3 N
E April 1 N

输出:(播放器名称仅用于帮助跟踪逻辑)

 Month      Qualified Players         Players
January 1 (B) 2 (A, B)
February 2 (A, B) 3 (A, B, D)
March 4 (A, B, C, D) 4 (A, B, C, D)
April 4 (A, B, C, D) 5 (A, B, C, D, E)

更新:以上是最简单的模型。在更深层次上,我想要有多个阈值组,类似地,玩家可以在阈值组中向上移动但永远不能向下移动。示例:

阈值组 = 低 (1-2)、中 (3-4)、高 (5)

输入df(同上):

 Player     Month   Score   Qualified?
A January 3 N
A February 4 Y
A March 5 Y
A April 5 Y
B January 4 Y
B February 3 N
C March 5 Y
D February 3 N
D March 4 Y
D April 3 N
E April 1 N

输出 df:

 Month  Threshold Group     Player Count
1 Low 0
1 Medium 2 (A, B)
1 High 0
2 Low 0
2 Medium 3 (A, B, D)
2 High 0
3 Low 0
3 Medium 2 (B, D)
3 High 2 (A, C)
4 Low 1 (E)
4 Medium 2 (B, D)
4 High 2 (A, C)

最佳答案

怎么样:

>>> df = pd.DataFrame(data={'player':list('AAAABBCDDDE'), 'month':[1,2,3,4,1,2,3,2,3,4,4], 'score':[3,4,5,5,4,3,5,3,4,3,1]})
>>> df

month player score
0 1 A 3
1 2 A 4
2 3 A 5
3 4 A 5
4 1 B 4
5 2 B 3
6 3 C 5
7 2 D 3
8 3 D 4
9 4 D 3
10 4 E 1

>>> res = df.groupby('month')
.apply(func=lambda x: ''.join(x.player.values))
.rename('active')
.to_frame()

>>> res['qualified'] = df.groupby('month')
.apply(func=lambda x: ''.join(x[x.score>=4].player.values))

>>> res

active qualified
month
1 AB B
2 ABD A
3 ACD ACD
4 ADE A

>>> res.cumsum().applymap(lambda x: np.unique(list(x)))

active qualified
month
1 [A, B] [B]
2 [A, B, D] [A, B]
3 [A, B, C, D] [A, B, C, D]
4 [A, B, C, D, E] [A, B, C, D]

老实说,我不喜欢这个解决方案,但到目前为止还没有找到更好的解决方案:(

关于python - 基于阈值的累计月度 YTD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40373633/

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