df = pandas.DataFrame({'a': np.random.random(100), 'b': np.random.random(
    100), 'id': np.arange(100)})
bins = np.linspace(df.a.min(), df.a.max(), 10)
groups = df.groupby(np.digitize(df.a, bins))
print(groups.mean())
print(groups.median())
print(groups.aggregate(lambda x: np.mean(x[x > 0.5])))
объединение фрейма данных в pandas в Python