python - Pandas:计算数据帧每列的一组n个值的平均值

标签 python pandas dataframe

我有以下类型的数据框:

     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/

相关文章:

python - Pandas merge_asof 不想在 pd.Timedelta 上合并,给出错误 "must be compat with type int64"

python - 在 Python 或 SQL 中像求解器一样使用 Excel

python - Pandas 用另一步切行

python - 屏蔽 pandas DataFrame 中最大值之前出现的所有值

python - 启用正在记录的 pysys 测试

python - memcached 中对象的最佳序列化方法是什么?

regex - 将选项卡上的某些空格替换为-定界符

python - 更改数据框中行的数据类型

python - 属性错误: 'NoneType' object has no attribute 'text' ?

python - 从 TextMate 运行时 pylint 会忽略 .pylintrc