J'ai un DataFrame pour lequel j'aimerais prendre plusieurs moyens et produire une seule série/DataFrame.
J'aimerais que chaque moyenne soit groupée par une 2x2 tranches de l'ensemble du DataFrame.
Un exemple de ceci serait :
df = pd.DataFrame({'0' : [4, 5, 6, 7, 8, 10], '1' : [2, 0, 1, 2, 3, 4],
'2' : [2, 4, 6, 8, 10, 12]}).T
df_mean
2.75
3
4
5
.
.
5.75
7.25
La façon dont il serait regroupé serait en prenant la première rangée 2x2 "tranche". ([4, 5], [2, 0])
calculer la moyenne (4+5+2+0)/4 = 2.75
puis répétez cette opération pour chaque tranche jusqu'à la rangée suivante, jusqu'à ce que toutes les tranches 2x2 possibles aient été calculées sur toutes les rangées.
Ie :
([5, 6], [0, 1]).mean() = 3
([6, 7], [1, 2]).mean() = 4
.
.
.
([3, 4], [10, 12]).mean() = 7.25
Je n'arrive qu'à comprendre comment regrouper 2 lignes en bas et prendre la moyenne :
df_mean = df.groupby(np.arange(len(df)) // 2).mean()
Mais cela ne fait que regrouper par 2 dans chaque colonne plutôt que dans une "cellule" 2x2.
Y a-t-il un moyen d'utiliser le groupby pour faire cela ? J'essaie d'éviter les boucles for coûteuses en calcul sur les indices de ligne et de colonne si possible.