Получить максимальную дату для уникального значения строки - PullRequest
1 голос
/ 19 октября 2019

Здравствуйте. У меня есть такие данные:

              campaign  status  d_cap
date                                 
2019-10-07  campaign_1   start    400
2019-10-13  campaign_2   start    400
2019-10-14  campaign_1  change   1000
2019-10-14  campaign_2  change    800
2019-11-10  campaign_1    stop      0
2019-11-12  campaign_2  change   2000

Требуемый вывод:

              campaign  status  d_cap
date                                 
2019-11-10  campaign_1    stop      0
2019-11-12  campaign_2  change   2000

Поэтому я хочу получить последний статус и d_cap для каждой уникальной кампании на основе максимальной даты. Я попытался исправить этот вопрос с помощью цикла for, но я думаю, что это не лучшее решение.

1 Ответ

0 голосов
/ 19 октября 2019

Если я правильно понимаю, вам нужно:

group = pdf.groupby(["date", "campaign"]).agg({"status": "last", "d_cap": "last"}).reset_index()
# Get indexes of the max date per group
idx = pdf.groupby(['campaign'])['date'].transform(max) == pdf['date']
# Filter the df
final = pdf[idx]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...