У меня есть следующий pandas
dataframe df
:
cluster tag amount name
1 0 200 Michael
2 1 1200 John
2 1 900 Daniel
2 0 3000 David
2 0 600 Jonny
3 0 900 Denisse
3 1 900 Mike
3 1 3000 Kely
3 0 2000 Devon
Что мне нужно сделать, это добавить еще один столбец в df
, который записывает для каждого row
, name
(из столбца имени), который имеет наибольшее значение amount
, где tag
равно 1. Другими словами, решение выглядит следующим образом:
cluster tag amount name highest_amount
1 0 200 Michael NaN
2 1 1200 John John
2 1 900 Daniel John
2 0 3000 David John
2 0 600 Jonny John
3 0 900 Denisse Kely
3 1 900 Mike Kely
3 1 3000 Kely Kely
3 0 2000 Devon Kely
Я пробовал что-то вроде этого:
df.group('clusters')['name','amount'].transform('max')[df['tag']==1]
но проблема в том, что имя не повторяется в каждой строке.Это будет выглядеть так:
cluster tag amount name highest_amount
1 0 200 Michael NaN
2 1 1200 John John
2 1 900 Daniel John
2 0 3000 David NaN
2 0 600 Jonny NaN
3 0 900 Denisse NaN
3 1 900 Mike Kely
3 1 3000 Kely Kely
3 0 2000 Devon NaN
Может кто-нибудь, пожалуйста, сообщите мне, как добавить условие с объединением с применением разделения, и повторить ли решение в каждой строке?