Я хочу рассчитать средние значения по группам, оставив значение самой строки.
import pandas as pd
d = {'col1': ["a", "a", "b", "a", "b", "a"], 'col2': [0, 4, 3, -5, 3, 4]}
df = pd.DataFrame(data=d)
Я знаю, как вернуть средства по группе:
df.groupby('col1').agg({'col2': 'mean'})
Что возвращает:
Out[247]:
col1 col2
1 a 4
3 a -5
5 a 4
Но то, что я хочу, это иметь в виду под группой, исключая значение строки. Например. для первого ряда:
df.query('col1 == "a"')[1:4].mean()
, который возвращает:
Out[251]:
col2 1.0
dtype: float64
Edit:
Ожидаемый результат - это кадр данных того же формата, что и df
выше, со столбцом mean_excl_own
, который является средним значением для всех остальных членов группы, исключая собственное значение строки.