Возьмите строки с максимальной датой из кадра данных pandas

У меня есть рамка данных pandas, которая выглядит так:

введите описание изображения здесь

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

введите описание изображения здесь

Мой столбец даты имеет тип данных «объект». Я попытался группировать, а затем попытался захватить max следующим образом:

idx = df.groupby(['ID','Item'])['date'].transform(max) == df_Trans['date']
df_new = df[idx]

Однако я не могу получить желаемый результат. Любая помощь по этому вопросу будет принята с благодарностью!

Всего 1 ответ


idxmax

Должна работать, пока index уникален или максимальный индекс не повторяется.

df.loc[df.groupby('ID').date.idxmax()]

OP (отредактировано)

Должен работать до тех пор, пока максимальные значения уникальны. В противном случае вы получите все строки, равные максимальному.

df[df.groupby('ID')['date'].transform('max') == df['date']]

ВБ переходит к решению

А также очень хорошее решение.

df.sort_values(['ID', 'date']).drop_duplicates('date', keep='last')

Есть идеи?

10000