У меня есть фрейм данных, который выглядит так:
ID VALUE
1 Low
1 High
1 Medium
1 Very_High
2 Low
2 Medium
2 Medium
Я хочу go через каждый уровень идентификатора и применяя определенные условия, преобразовать столбец VALUE. Условия таковы:
i. Если в любой из строк этого идентификатора есть «Very_High», сделайте все строки для этого идентификатора «Very_High»
ii. Иначе Если в любой из строк этого идентификатора стоит «Высокий», сделайте все строки для этого идентификатора «Высокими»
iii. Иначе Если в любой из строк этого идентификатора стоит «Средний», сделайте все строки для этого идентификатора «Средним»
iv. В противном случае сделайте строки в идентификаторе «Низкими»
Ожидаемый результат фрейма данных:
ID VALUE
1 Very_High
1 Very_High
1 Very_High
1 Very_High
2 Medium
2 Medium
2 Medium
Это то, что я пробовал, но не работал:
if (df_new.groupby('ID')['VALUE']=='Very_High').any():
df_new = df_new.loc[df_new.groupby('ID')['VALUE'] == 'Very_High'].copy()
elif (df_new.groupby('ID')['VALUE'] =='High').any():
df_new = df_new.loc[df_new.groupby('ID')['VALUE'] == 'High'].copy()
elif (df_new.groupby('ID')['VALUE']=='Medium').any():
df_new = df_new.loc[df_new.groupby('ID')['VALUE'] == 'Medium'].copy()
else:
df_new = df_new.loc[df_new.groupby('ID')['VALUE'] == 'Low'].copy()