Используйте, DataFrame.groupby
в Color
, затем используйте .transform
в столбце Plant
, чтобы подсчитать количество уникальных растений, связанных с данным цветом, затем создайте логическую маску m
, где истинные значения соответствуют условию, когда уникальные растения больше 1: Затем используйте np.where
, чтобы выбрать 1
или 0
на основе этой маски m
.
m = df.groupby('Color')['Plant'].transform('nunique').gt(1)
df['Spillover'] = np.where(m, 1, 0)
df
Color Plant Spillover
0 green1 1 1
1 blue2 1 0
2 red1 1 0
3 purple6 2 1
4 blue2 1 0
5 blue3 2 0
6 green1 2 1
7 green1 1 1
8 red2 1 0
9 purple6 1 1