Python выбирает данные для топ-3 значений на группу в кадре данных - PullRequest
2 голосов
/ 23 мая 2019

Из данного кадра данных, отсортированного по ID и дате:

ID  Date        Value
1   12/10/1998  0
1   04/21/2002  21030
1   08/16/2013  56792
1   09/18/2014  56792
1   09/14/2016  66354
2   06/16/2015  46645
2   12/08/2015  47641
2   12/11/2015  47641
2   04/13/2017  47641
3   07/29/2009  28616
3   03/31/2011  42127
3   03/17/2013  56000

Я хотел бы получить значения для первых 3 дат, сгруппировать по идентификатору:

56792
56792
66354
47641
47641
47641
28616
42127
56000

Мне нужны только значения

1 Ответ

3 голосов
/ 23 мая 2019

Вы можете sort_values как ID и Date, так и использовать GroupBy.tail, чтобы взять значения для первых трех дат:

df.Date = pd.to_datetime(df.Date)
df.sort_values(['ID','Date']).groupby('ID').Value.tail(3).to_numpy()

# array([56792, 56792, 66354, 47641, 47641, 47641, 28616, 42127, 56000])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...