Идея - это проверка, если хотя бы один Covered
на группу по сравнению с Series.eq
и GroupBy.any
:
m = df['Covered/Not Covered'].eq('Covered').groupby(df['Security']).transform('any')
Или получить все Security
значения с Covered
и тестовый столбец с Series.isin
для всех групп:
m = df['Security'].isin(df.loc[df['Covered/Not Covered'].eq('Covered'), 'Security'])
А затем установить исходные значения по маске:
df.loc[m, 'Covered/Not Covered'] = 'Covered'