我有以下类型的数据框:
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。
最佳答案
如果默认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]
关于python - Pandas:计算数据帧每列的一组n个值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54806672/