我有以下类型的数据框:
A B
0 1 2
1 4 5
2 7 8
3 10 11
4 13 14
5 16 17
我想计算每列的前3个元素的平均值,然后计算接下来的3个元素,依此类推,然后存储在数据框中。
所需的输出-
A B
0 4 5
1 12 14
使用Group By是我想到的方法之一,但在这种情况下我无法弄清楚如何使用Group by。
答案 0 :(得分:2)
如果默认为RangeIndex
,则使用整数除法并传递给groupby
:
df = df.groupby(df.index // 3).mean()
print (df)
A B
0 4 5
1 13 14
详细信息:
print (df.index // 3)
Int64Index([0, 0, 0, 1, 1, 1], dtype='int64')
按DataFrame的长度创建数组的一般解决方案-使用所有索引值:
df = df.groupby(np.arange(len(df)) // 3).mean()
详细信息:
print (np.arange(len(df)) // 3)
[0 0 0 1 1 1]