Я слишком новичок, чтобы комментировать, но мне нужно больше информации, почему «Y» покупатель повторно активирует?Может быть, я не понимаю вашего объяснения, потому что клиент «А» находится в аналогичной ситуации, а вы дали ему «Понижение».Может быть, просто введите свой вопрос еще раз, но представьте, что его читает 8-летний человек (мне).
Вот код, который вам нужен, но он работает:
#convert columns to dates
df['Canceled_at'] = pd.to_datetime(df['Canceled_at'])
df['Created'] = pd.to_datetime(df['Created'])
#make customer a list so we can loop through it
customer = list(df['Customer'].drop_duplicates())
#super awesome for loop that give us the largest date (this is the part where maybe your logic is different than what I read it as)
for c in customer:
df.loc[(df['Customer'] == c), 'Most Recent Cancel'] = df.loc[(df['Customer'] == c)]['Canceled_at'].max()
df.loc[(df['Customer'] == c), 'Most Recent Created'] = df.loc[(df['Customer'] == c)]['Created'].max()
#Make 'New_status' column
df.loc[(df['Most Recent Created'] > df['Most Recent Cancel']), 'New_status'] = 'Reactivate'
df.loc[(df['New_status'] != 'Reactivate'), 'New_status'] = 'Downgrade'