gpt4 book ai didi

python pandas 创建数据框连胜

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:30 25 4
gpt4 key购买 nike

我需要创建“连胜”列。例如,我有如下数据。具有最大值的列获胜。

AA      BB      CC
5.95 5.95 0
0 -2.35 2.35
-0.6 -0.6 -0.6
-2.35 2.35 0
-1.6 1.6 -1.6
-1.25 1.25 1.25
1.85 0 -1.85
1.3 0 -1.3
-1.7 1.7 -1.7
0 0.25 0.25

并且需要创建“连胜;连续获胜的次数”列,如下所示。

AA      BB      CC      CW_AA   CW_BB   CW_CC
5.95 5.95 0 1 1 0
0 -2.35 2.35 0 0 1
-0.6 -0.6 -0.6 1 1 2
-2.35 2.35 0 0 2 0
-1.6 1.6 -1.6 0 3 0
-1.25 1.25 1.25 0 4 1
1.85 0 -1.85 1 0 0
1.3 0 -1.3 2 0 0
-1.7 1.7 -1.7 0 1 0
0 0.25 0.25 0 2 1

我已经尝试使用“itertools”库 (groupby) 来实现它,但还不能。有人可以帮我吗?

pd.DataFrame({'AA':[5.95, 0, -0.6, -2.35, -1.6, -1.25, 1.85, 1.3, -1.7, 0],
'BB':[5.95, -2.35, -0.6, 2.35, 1.6, 1.25, 0, 0, 1.7, 0.25],
'CC':[0, 2.35, -0.6, 0, -1.6, 1.25, -1.85, -1.3, -1.7, 0.25]})

最佳答案

使用:

a = df.eq(df.max(axis=1), axis=0)
b = a.cumsum()
df = b - b.where(~a).ffill().fillna(0).astype(int)
print (df)
AA BB CC
0 1 1 0
1 0 0 1
2 1 1 2
3 0 2 0
4 0 3 0
5 0 4 1
6 1 0 0
7 2 0 0
8 0 1 0
9 0 2 1

解释:

  1. 首先比较 eq 的所有列每行 max
  2. 通过用 cumsum 减去累积和来计算连续的 True

关于python pandas 创建数据框连胜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49999334/

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