У меня есть DataFrame, для которого я хотел бы взять несколько средств и вывести один Series / DataFrame для.
Я бы хотел, чтобы каждое среднее было сгруппировано по срезу 2x2 всего DataFrame.
Примером этого может быть:
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
Способ, которым будет группироваться, взяв первые строки 2x2 'slice' ([4, 5], [2, 0])
рассчитать среднее(4+5+2+0)/4 = 2.75
, затем повторяйте это для каждого среза до следующей строки, пока все возможные срезы 2x2 не будут рассчитаны по всем строкам.
Т.е.:
([5, 6], [0, 1]).mean() = 3
([6, 7], [1, 2]).mean() = 4
.
.
.
([3, 4], [10, 12]).mean() = 7.25
Я могу только вычислитьо том, как сгруппировать 2 вниз по строке и взять среднее значение:
df_mean = df.groupby(np.arange(len(df)) // 2).mean()
Но это только сгруппирует по 2 вниз по каждому столбцу, а не по 2x2 «ячейке».
Есть ли способиспользовать groupby, чтобы сделать это?Я стараюсь избегать вычислительно дорогостоящих циклов for для индексов строк и столбцов, если это возможно.