查找两个元素上的最大值-列只返回循环的最终结果



我对python比较陌生,迫切需要一些帮助。

我有一个数据帧(称为"waves"),其中包含决斗的详细比赛列表,其中两个人执行得分操作。每个动作的得分在0-10之间。数据帧按决斗中剩余的时间排序。

数据集"waves"示例:

Person  Movement Score Timeleft
0    BH99    WBP16   4.73  25:43.0
1    JD21    WBP17   5.33  25:01.0
2    BH99    WBP18   5.23  23:20.0
3    BH99    WBP19   4.83  19:48.0
4    JD21    WBP20   4.83  18:26.0
5    BH99    WBP21   5.27  16:15.0
6    BH99    WBP22   1.60  12:45.0
7    JD21    WBP23   3.10  07:42.0
8    JD21    WBP24   5.07  06:36.0
9    BH99    WBP25   6.33  06:25.0
10   JD21    WBP26   0.27  03:34.0
11   BH99    WBP27   4.40  02:43.0
12   JD21    WBP28   4.57  02:29.0

从这个数据框中,我现在想创建两个列,记录(按元素的方式)当前的两个高分。

我为这个

编写了以下代码
#setting initial starting value for max1 and max2 to zero and creating column in datafram "waves"
max1 = 0
max2 = 0
waves["max1"]=max1
waves["max2"]=max2
#for loop to calulate highscores elementwise
for high in waves["Score"]:
if high > max1 :
max2 = max1
max1 = high
waves["max1"]=max1
waves["max2"]=max2
print(max1, max2)       
elif max2 < high <= max1:
max1 = max1
max2 = high   
print(max1, max2)
waves["max1"]=max1
waves["max2"]=max2

else:     
max1 = max1
max2 = max2
print(max1, max2)
waves["max1"]=max1
waves["max2"]=max2

print(waves)    

现在的问题是,打印调用print(max1, max2)返回的正是我想要的,不知怎么的,新列"max1"one_answers";max2"然而,在我的wave数据帧中,每行只包含最终的(而不是元素方面的)两个高分。

for循环中print(max1, max2)的输出:

4.73 0
5.33 4.73
5.33 5.23
5.33 5.23
5.33 5.23
5.33 5.27
5.33 5.27
5.33 5.27
5.33 5.27
6.33 5.33
6.33 5.33
6.33 5.33
6.33 5.33

包含新列max1 &amp的更新数据帧波输出max2:

Person Movement  Score Timeleft  max1  max2
0    BH99    WBP16   4.73  25:43.0  6.33  5.33
1    JD21    WBP17   5.33  25:01.0  6.33  5.33
2    BH99    WBP18   5.23  23:20.0  6.33  5.33
3    BH99    WBP19   4.83  19:48.0  6.33  5.33
4    JD21    WBP20   4.83  18:26.0  6.33  5.33
5    BH99    WBP21   5.27  16:15.0  6.33  5.33
6    BH99    WBP22   1.60  12:45.0  6.33  5.33
7    JD21    WBP23   3.10  07:42.0  6.33  5.33
8    JD21    WBP24   5.07  06:36.0  6.33  5.33
9    BH99    WBP25   6.33  06:25.0  6.33  5.33
10   JD21    WBP26   0.27  03:34.0  6.33  5.33
11   BH99    WBP27   4.40  02:43.0  6.33  5.33
12   JD21    WBP28   4.57  02:29.0  6.33  5.33

我在这里错过了什么?在另一个线程中,我读到它可以连接到我的缩进,但到目前为止还没有成功地调整它…

任何帮助都是感激的。谢谢你,祝你愉快。-)

用列表跟踪它们。添加新值,排序列表,删除最低的值。将新列保留在列表中,然后将它们添加到循环后的df中。


max1col = []
max2col = []
maxes = [0,0]
#for loop to calulate highscores elementwise
for high in waves["Score"]:
maxes.append(high)
maxes = sorted(maxes)[-2:]
max1col.append(maxes[0])
max2col.append(maxes[1])
waves["max1"]=max1col
waves["max2"]=max2col
print(waves) 

最新更新