Фрейм данных генерируется следующим образом. Как лучше всего посчитать, сколько значений больше среднего значения, сгруппированного по ["A", "B"]?
import numpy as np
import pandas as pd
keys = np.array([['A', 'B'], ['A', 'B'], ['A', 'B'],
['A', 'B'], ['C', 'D'], ['C', 'D'],
['C', 'D'], ['E', 'F'], ['E', 'F'],
['G', 'H']])
df = (pd.DataFrame(np.hstack([keys,np.random.randn(10,4).round(2)]),
columns = ['col1', 'col2', 'col3',
'col4', 'col5', 'col6'])
.astype({'col3': float,
'col4': float,
'col5': float,
'col6': float}))
Я попытался сначала посчитать среднее, а затем соединить сгруппированный фрейм данных с исходным, а затем сделать сумму (1). Но это кажется немного утомительным.
df2 = pd.merge(df.groupby(["col1", "col2"]).mean(), df, left_on=["col1", "col2"], right_on=["col1", "col2"])