Итак, допустим, у меня есть двухуровневый DataFrame для панд, с кластером в качестве уровня 0 и подкластером в качестве уровня 1 в мультииндексе:
Cluster 1 2 3
subcluster 1 1 2 1 2 2 1 2 3
A 11 12 13 13 20 21 16 127 18
B 14 15 16 14 19 22 16 027 19
C 17 18 19 15 18 23 16 71 12
D 20 21 22 16 17 24 16 71 30
Кем бы я хотел бытьМожно создать DataFrame, состоящий из среднего значения каждого подкластера.Обратите внимание, что некоторые из подкластеров названы одинаково из-за номенклатуры набора данных (например, каждый кластер 1 и 2 имеет два разных подкластера, как показано выше. Мой фактический набор данных намного больше, с 15 различными кластерами и максимумомиз 29 подкластеров, в общей сложности около 40 000 столбцов.
Использование df.groupby(level=1, axis=1).mean()
не работает, так как оно не различает, например, кластер 1 подкластер 1 и кластер 2 подкластер 1, что я хотел быdo. Другими словами, он создал бы DataFrame со средствами, который имеет только 3 столбца, по одному для каждого подкластера, тогда как я хотел бы ограничить его, чтобы найти средства для каждого подкластера в его кластере. Использование df[1].groupby(level=0, axis=1).mean()
делает работунасколько я могу судить, но это означает, что я должен сделать это для каждого из 15 кластеров, а затем объединить все из них, чтобы в конечном итоге, где я хочу.
Мой вопрос, есть ли быстрее, большеэлегантный способ сделать это. Кроме того, предпочтительно способ, который хранит информацию о кластере происхождения. Мой способ сделать этоне показывает основной кластер, это означает, что я должен вручную добавить это в каждый из DataFrame перед объединением.
Надеюсь, мой вопрос ясен.