如何在每个组中查找字符串,然后比较其他列的值,然后将其存储在新创建的列中

时间:2019-06-26 20:54:12

标签: python pandas dataset data-analysis

我有三个数据集,我根据一些键进行了合并,并按照升序排列了“ registrationdatetime”和“ submissiondatetime”。然后,我应用groupby来按“ contestid”和“ userhandle”对它们进行分组。我还必须计算在当前求解器之前参加比赛的求解器数量,我也为此写了一行,但是

现在,我必须新建一个名为priorperformanceofsolver的专栏(在最近结束的竞赛中的表现(当前解决者提交的分数在最近结束的竞赛中的得分)。

我的目标是-每个小组都按照race_id进行排列,然后应该有“用户句柄”或参加比赛的人员,按照到达日期的升序排列,以便我算出参加比赛的人最后谁参加了比赛,我想创建一个新的列,称为priorperformanceofsolver,以存储以前的表现

很抱歉,这么长的时间,但是我真的不知道是对还是错,也无法弄清楚如何使priorperformanceofsolver列。

我必须为每个用户句柄搜索每个竞赛,并找到他们参加的每个竞赛,这些竞赛中哪个是最近的竞赛,最近一次竞赛中他们的得分是多少,并存储在名为“ priorperformanceofsolver”的栏中表示他们最近参加的竞赛的得分。请帮助我,我被困住了;如果阅读此超长问题有困难,请发表评论,但如果可能,请帮助我。我是python的新手

'''

    dftotal.groupby(["contestID", "userHandle"])
    dftotal["registerDateTime"] = pd.to_datetime(dftotal.registerDateTime, 
    utc=True)
    dftotal["RegistrationDateTime"] = dftotal["registerDateTime"]
    dftotal["submitDateTime"] = pd.to_datetime(dftotal.submitDateTime, utc 
    =True)
    dftotal["SubmissionDateTime"] = dftotal["submitDateTime"]

    dftotal.sort_values(by=['RegistrationDateTime'])
    dftotal.sort_values(by = ["SubmissionDateTime"])

    dftotal['priorcountofentrants'] = 
    dftotal.groupby(['contestID']).cumcount()

'''

Data -
contstID userHndle RegistrtnDteTime SubmssnDtTme priorcntofentrnts finalScore

   6638   holo   2012-01-0921:45:20 2012-03-1020:45:20  0            100 
   6638   kolo   2012-01-0922:45:20 2012-03-1023:45:20  1             50   

   8878   holo   2011-01-0921:45:20 2011-01-1020:45:20  0            100 
   8878   kolo   2011-01-0922:45:20 2011-01-1023:45:20  1            100  

expected - 
contstID userHndle RegstrtnDteTme SubmsnDtTm prircntofentrnts finalScore 
                                                                priorperformce

   6638   holo   2012-01-0921:45:20 2012-01-1020:45:20  0       100       100
   6638   kolo   2012-01-0922:45:20 2012-01-1023:45:20  0       50        100

因此,此处kolo和holo在他们的名字旁边显示了前一次比赛的分数(最近结束日期明智),即在第8878号比赛中,他们分别获得了100和50的分数,因此在新比赛6638中,他们的名字旁边显示了该分数,然后类似地发生竞赛8878中,它必须搜索求解器的先前性能

0 个答案:

没有答案