Если мы запустим следующий код
np.random.seed(0)
features = ['f1','f2','f3']
df = pd.DataFrame(np.random.rand(5000,4), columns=features+['target'])
for f in features:
df[f] = np.digitize(df[f], bins=[0.13,0.66])
df['target'] = np.digitize(df['target'], bins=[0.5]).astype(float)
df.groupby(features)['target'].agg(['mean','count']).head(9)
Мы получим средние значения для каждой группировки набора функций:
mean count
f1 f2 f3
0 0 0 0.571429 7
1 0.414634 41
2 0.428571 28
1 0 0.490909 55
1 0.467337 199
2 0.486726 113
2 0 0.518519 27
1 0.446281 121
2 0.541667 72
В приведенной выше таблице некоторые группы имеют слишкомНесколько наблюдений, и я хочу объединить их в «смежную» группу по некоторым правилам.Например, я могу захотеть объединить группу [0,0,0] с группой [0,0,1], поскольку она имеет не более 30 наблюдений.Интересно, есть ли какой-нибудь хороший способ работы таких групповых комбинаций по значениям столбцов без создания отдельного словаря?Более конкретно, я могу захотеть объединиться из группы с наименьшим количеством в смежную группу (следующую группу в порядке индекса), пока общее количество групп не станет больше 10.