【发布时间】:2019-04-23 21:52:26
【问题描述】:
我正在尝试对机器人比赛的团队进行排名。他们将分三个阶段进行比赛。他们在每个阶段都有总分和持续时间。样本数据如下:
如果我不用比较时间,那么python的“max()”函数就可以了。
data["max"] = data[["stage1","stage2","stage3"]].max(axis=1)
我使用 pandas 库的“sort_values”方法对它们进行排序。为了对球队进行排名,我必须在 3 个阶段中找到最好的成绩。如果我不看时间,我可以通过在 max 方法中插入点来找到最好的分数,但如果点相等,我应该将它们与他们拥有的最佳时间进行比较。为了能够打出最好的成绩和获得足够的时间。
对于创建数据:
import pandas as pd
import numpy as np
import random
data = pd.DataFrame()
puanlar=[]
for sayi in np.ones(100):
puanlar.append(sayi*random.randrange(1,100))
puanlar2 = []
for sayi in np.ones(100):
puanlar2.append(sayi*random.randrange(1,100))
puanlar3 = []
for sayi in np.ones(100):
puanlar3.append(sayi*random.randrange(1,100))
data["stage1"] = puanlar
data["stage2"] = puanlar2
data["stage3"] = puanlar3
dakika=[]
saniye = []
salise = []
for sayi in np.ones(100):
dakika.append(random.randrange(1,4))
saniye.append(random.randrange(1,60))
salise.append(random.randrange(1,60))
data["stage1_minute"] = dakika
data["stage1_second"] = saniye
data["stage1_millisecond"] = salise
dakika=[]
saniye = []
salise = []
for sayi in np.ones(100):
dakika.append(random.randrange(1,4))
saniye.append(random.randrange(1,60))
salise.append(random.randrange(1,60))
data["stage2_minute"] = dakika
data["stage2_second"] = saniye
data["stage2_millisecond"] = salise
dakika=[]
saniye = []
salise = []
for sayi in np.ones(100):
dakika.append(random.randrange(1,4))
saniye.append(random.randrange(1,60))
salise.append(random.randrange(1,60))
data["stage3_minute"] = dakika
data["stage3_second"] = saniye
data["stage3_millisecond"] = salise
data["max"] = data[["stage1","stage2","stage3"]].max(axis=1)
data.sort_values(['max'], ascending=False,inplace=True)
【问题讨论】:
-
请不要发布数据的示例图像。花点时间在帖子中输入部分内容,或提供数据生成代码。
-
感谢您的建议,很抱歉变量名,但我已经添加了代码。
-
你看过 sort_values 上的 Pandas 文档吗?另外,当时,我会在排序前将所有内容转换为毫秒。
-
是的,我会找到我使用后收到的最大值和持续时间,但问题是:我不知道哪个阶段最高
-
我编辑并试图描述性。感谢您的反馈:)