Хорошо, допустим, у меня есть df - частота животных в разных домах:
Animal Frequency
0 Dog 5
1 Cat 7
2 Cat 2
3 Fish 2
4 Dog 8
Теперь давайте скажем, что мне все равно, в каком домохозяйстве, я просто хочу, чтобы среднее значение каждого животного отображалось под частотой, поэтому я получаю среднее значение с помощью:
mean = df.groupby(['Animal']).mean()
Теперь это дает мне серию (или блок данных в моем фактическом большем df) с индексом в качестве разных животных:
Frequency
Dog 6.5
Cat 4.5
Fish 2
Теперь я просто хочу, чтобы мой оригинальный df был:
Animal Frequency
0 Dog 6.5
1 Cat 4.5
2 Cat 4.5
3 Fish 2
4 Dog 6.5
Попытка с использованием встроенного цикла for (Помните, мой реальный проект означает, что среднее значение возвращает кадр данных, а не серию):
for idx in df.index:
for item in mean.Animal:
if df.Animal[idx] == mean.Animal[item]:
df.at[idx, 'Frequency'] = mean.at[item, 'Frequency']
Приведенный выше код выполняется бесконечно долго, фактический фрейм данных очень большой.