x=df.groupby(['id_gamer'])[['sucess', 'nb_games']].shift(periods=1).cumsum()
.apply(lambda row: row.sucess/row.nb_games, axis=1)
В приведенном выше коде я делаю groupby
на pandas.DataFrame
, чтобы получить смещенный столбец результатов, представленных в виде соотношения, для каждого игрока и каждой игры.Фактически его показатель успеха, учитывая количество игр, в которые он играл.
Возвращает объект pandas.core.series.Series
как:
+---------------+----------------+
| Index | Computed_ratio |
+---------------+----------------+
| id_game_date | NaN |
| id_game2_date | 0.30 |
| id_game3_date | 0.40 |
| id_game_date | NaN |
| id_game4_date | 0.50 |
| ... | ... |
+---------------+----------------+
Таким образом, вы можете увидеть NaN
как разделение междугеймеры.Как вы можете видеть, первый и второй игроки встретились в одной игре: id_game_date
.И именно поэтому я бы предпочел, чтобы столбец gamer из id_gamer
появился, чтобы объединить его с фреймом данных, из которого получены данные.
Если честно, у меня есть идея решения: просто не используйтеid игр в качестве индекса, тогда каждая строка будет проиндексирована правильно, и я не думаю, что при слиянии возникнет конфликт.Но я хотел бы знать, возможно ли это с этим текущим шаблоном, показанным здесь.
Примечание: я уже пробовал с решениями, представленными в этой теме 1019 *.Но ничего из этого не работает, конечно, потому что показанные функции являются агрегатами, а не моими: cumsum ().Если я использовал функцию агрегирования, такую как sum () (с другим шаблоном кода, не пытайтесь использовать тот, который я вам дал, или он вернет ошибку), появится id_gamer
.Но это не соответствует моим ожиданиям.