Давайте предположим, что у меня есть следующий фрейм данных:
df = pd.DataFrame({"id": [1, 1, 1, 2, 2, 2], "date": [pd.Timestamp(2016, 7, 29), pd.Timestamp(2017, 8, 22), pd.Timestamp(2017, 10, 9), pd.Timestamp(2018, 1, 9), pd.Timestamp(2018, 3, 31), pd.Timestamp(2018, 7, 5)], "other_col": [11.1, 77.7, 22.2, 33.3, 44.4, 88.8]})
Чего я хочу добиться, это удалить последние N
строки для каждой группы, где data-frame is grouped by id
такое, что N
: Количество строк, которые имеют date
, что в течение 3 месяцев с date
последней строки (Это удалит последнюю строку).Результирующий фрейм данных должен быть:
r_df = pd.DataFrame({"id": [1, 2, 2], "date": [pd.Timestamp(2016, 7, 29), pd.Timestamp(2018, 1, 9), pd.Timestamp(2018, 3, 31)], "other_col": [11.1, 33.3, 44.4]})
- Строки фрейма данных всегда будут упорядочены
- Последняя строка также должна быть удалена, поскольку по умолчанию ее дата равнав пределах диапазона «удалить» даты для каждой группы.