Мы добавляем столбец с надписью 'Retained'
:
df['Customer Lost/Retained'] = 'Retained'
За исключением индексов с наибольшим годом на одного клиента, они получают значение 'Lost'
:
mask = df.groupby('Customer')['Year'].idxmax()
df.loc[mask, 'Customer Lost/Retained'] = 'Lost'
Customer Year Customer Lost/Retained
0 A 2009 Retained
1 A 2010 Retained
2 A 2011 Lost
3 B 2008 Lost
4 C 2008 Retained
5 C 2009 Lost
Или, альтернативно, сначала введите 'Lost'
, а затем .fillna()
:
df.loc[df.groupby('Customer')['Year'].idxmax(), 'Customer Lost/Retained'] = 'Lost'
df['Customer Lost/Retained'] = df['Customer Lost/Retained'].fillna('Retained')