Python панды: добавление нового столбца, где каждая строка зависит от предыдущих строк - PullRequest
0 голосов
/ 23 октября 2018

У меня возникли проблемы с выяснением того, как я могу добавить новые столбцы, записи которых ссылаются на несколько других строк одного и того же кадра данных.

Входной кадр данных:

Date        Player1ID  Player2ID  WinnerID  
2018-06-10  a          b          a
2018-06-11  b          c          b
2018-06-12  c          a          a
2018-06-13  b          a          a
2018-06-14  b          b          c
2018-06-15  a          c          c
2018-06-16  b          c          b
2018-06-17  a          c          a
2018-06-18  b          a          a
...

Контекст: строкиэтого кадра данных - результаты спортивного матча.Я хочу создать два столбца, в которых на каждой дате будет показана «текущая форма» игрока 1 и игрока 2. Для простого начала я хочу использовать количество игр в последних N играх (в примере N = 2ниже), что каждый игрок выиграл.

Например, в 2018-06-13 игрок 2 (игрок с идентификатором '1') был в хорошей форме - они выиграли обе свои предыдущие две игры в 2018 году-06-12 и 2018-06-10.Таким образом, на эту дату индикатор формы p2_Num_wins_last2 установлен как 1.

Требуемый выходной фрейм данных:

Date        Player1ID  Player2ID  WinnerID  p1_Num_wins_last2  p2_Num_wins_last2
2018-06-10  a          b          a         -                  -    
2018-06-11  b          c          b         -                  -
2018-06-12  c          a          a         -                  -
2018-06-13  b          a          a         1                  2
2018-06-14  3          b          c         0                  1
2018-06-15  a          c          c         2                  1
2018-06-16  b          c          b         0                  2
2018-06-17  a          c          a         1                  1
2018-06-18  b          a          a         1                  1
...

Я пытаюсь использовать функцию lapply со ссылкой на некоторый суб-фрейм данных вышеоригинальный, например.

df["p1_Num_wins_last2"] = df.lapply(lambda row: func(row,subDataFrame))

, но мне действительно тяжело заставить его работать.Нужно обобщить это для многих игроков, большого количества дат и более общего числа игр N.

Любой совет будет высоко ценится!

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