У меня есть следующие данные:
player_id broadcast_month_id runs_tier
67 201803 100s
67 201803 400s
67 201802 50s
67 201802 100s
67 201801 50s
67 201712 50s
67 201711 50s
67 201710 50s
67 201709 50s
67 201708 50s
67 201707 50s
67 201706 50s
67 201705 50s
67 201704 50s
67 201704 Others
Я хочу выяснить последний показатель run_tier каждого игрока в наборе данных (этот образец содержит только 1 игрока, но в исходном наборе данных содержится около 500 игроков)
После прочтения данных я группирую по player_id, а затем сечу по месяцам и подсчитываю количество месяцев на каждом уровне, как показано ниже:
run_tier = df_tier.pivot_table(index=['player_id'],columns=['runs_tier'],aggfunc='count',fill_value=0)\
.xs('broadcast_month_id', axis=1, drop_level=True)
Я могу получить уровень, на котором игрок провел максимальное количество месяцев, как показано ниже:
run_tier['latest'] = df_tier.sort_values('player_id').groupby('player_id')['runs_tier'].tail(1).values
Как получить последний уровень проигрывателя?
В соответствии с приведенными выше данными, это последние игроки Run_tier составляет 100 с
Может кто-нибудь помочь мне с этим?
household_id 100s 400s 50s Others latest
67 2 1 11 1 100s
В случае дубликатов, таких как первые 2 записи, я выбираю самую верхнюю после сортировки по дате.