Согласно документации для панд DataFrame.assign
ключевые слова - это имена столбцов. Если значения могут быть вызваны, они вычисляются в DataFrame и присваиваются новым столбцам. Вызываемый объект не должен изменять входной DataFrame (хотя pandas не проверяет его). Если значения не могут быть вызваны (например, ряд, скаляр или массив), они просто присваиваются.
Так что вам нужно либо присвоить его исходному df, либо использовать явное общее назначение. Также вам не нужно replace
использовать transform
:
df['Lane_Score'] = df.groupby(['ORG','DSTN']).FLAG.transform(lambda x: (x=='Y').mean())
Или более быстрый подход:
df['Lane_Score'] = df['FLAG']=='Y'
df['Lane_Score'] = df.groupby(['ORG','DSTN']).Lane_Score.transform('mean')
Или:
df = df.assign(Lane_Score=df.groupby(['ORG','DSTN']).FLAG.apply(lambda x: x.replace('Y|N',(x=='Y').mean(),regex=True)))
print(df)
ORG DSTN FLAG Lane_Score
0 LON SIN Y 0.500000
1 ADL SIN N 0.333333
2 SIN LON N 0.600000
3 LON SIN Y 0.500000
4 LON SIN N 0.500000
5 ADL SIN Y 0.333333
6 ADL SIN N 0.333333
7 SIN LON Y 0.600000
8 SIN LON Y 0.600000
9 SIN LON Y 0.600000
10 SIN LON N 0.600000
11 LON SIN N 0.500000