Это, вероятно, то, что вы ищете, в то время как ответ @Naga Kiran делает это в одной строке, я просто упрощаю шаг за шагом.
import pandas as pd
df = pd.DataFrame({"id":[1, 2, 3, 4], "Date":["2018-07-01", "2018-08-01", "2018-09-02", "2018-10-03"]})
newdf = df.sort_values(["Date"], ascending=False)
newdf["Date1"] = newdf["Date"].transform(lambda x:x.shift(-1))
newdf.groupby("id").head(3)
Сначала я отсортировал фрейм данных, затем добавил Date1 с shift(-1)
, который сместил значение столбца в одну строку вверх, а затем сделал groupby("id")
.
Надеюсь, это поможет.