Given the following data frame:
import pandas as pd import numpy as np df = pd.DataFrame({\'Site\':[\'A\',\'A\',\'A\',\'B\',\'B\',\'B\',\'C\',\'C\',\'C\'],
You can use transform as answered here
transform
df['Value'] = df.groupby('Site').transform(lambda x: x.fillna(x.mean())) Site Value 0 A 1 1 A 1 2 A 1 3 B 2 4 B 2 5 B 2 6 C 3 7 C 3 8 C 3