Давайте избавимся от лямбды, используя transform
+ any
:
m = df.Vehicle_Color.eq('Red').groupby(df.Owner).transform('any')
df.loc[m, 'Vehicle_Color'] = 'Red'
Или
m = (
df.set_index('Owner')
.Vehicle_Color
.eq('Red')
.groupby(level=0)
.transform('any')
)
df.loc[m, 'Vehicle_Color'] = 'Red'
Это должно быть немного быстрее, так как группировщик указан на *Индекс 1009 *.
df
Owner Vehicle_Color
0 James Red
1 Peter Green
2 James Red
3 Sally Blue
4 Steven Red
5 James Red
6 James Red
7 Peter Blue