Как найти строку в каждой группе, а затем сравнить значения других столбцов, а затем сохранить ее в новом созданном столбце - PullRequest
1 голос
/ 26 июня 2019

У меня было три набора данных, которые я объединил в соответствии с некоторыми ключами, и я упорядочил «Время регистрации» и «Время отправки» в порядке возрастания. Затем я применил groupby для группировки их по "contestid" и "userhandle". Я также должен был подсчитать количество решателей, которые участвовали в конкурсе перед текущим решателем, я также написал строку для этого, но

Теперь мне нужно создать новый столбец с именем priorperformanceofsolver (выступление в недавно завершившемся конкурсе (количество заявок текущего решателя в последнем завершенном конкурсе).

Моя цель состоит в том, чтобы - в каждой группе, организованной в соответствии с Competition_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

так что здесь у коло и холо их счет из предыдущего конкурса (недавно завершенная с указанием даты) отображается рядом с их именем, то есть из конкурса 8878 они набрали 100 и 50 баллов, поэтому он отображается рядом с их именем в новом конкурсе 6638, тогда это происходит аналогично на конкурс 8878, где он должен искать предшествующее исполнение решателя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...