次のような pd.dataframe があります。
cookie date channel goal_reached
cookie_1 2020-01-12 paid 0
cookie_1 2020-02-17 organic 0
cookie_1 2020-04-02 referral 1
cookie_1 2020-05-13 direct 0
cookie_1 2020-05-16 direct 0
cookie_2 2020-01-18 referral 0
cookie_2 2020-03-13 paid 1
cookie_2 2020-04-01 organic 0
cookie_2 2020-05-16 organic 0
cookie_2 2020-05-22 paid 0
cookie_3 2020-01-13 direct 0
cookie_3 2020-04-14 organic 0
cookie_3 2020-06-10 organic 0
Cookie 値ごとにグループ化し、goal_reached 値 1 の日付以降のすべての行を削除したいと考えています。Cookie に goal_reached 値 1 がない場合は、すべての行を取得する必要があります。
次のような最終出力が必要です。
cookie channel goal_reached
cookie_1 paid > organic > referral 1
cookie_2 referral > paid 1
cookie_3 direct > organic > organic 0
次のコードがありますが、すべての行でグループ化できます。
df = df.sort_values(['cookie', 'date'],
ascending=[False, True])
df = df.groupby('cookie', as_index=False).agg({'channel': lambda x: "%s" % ' > '.join(x), 'reg_goal': 'max'})