如何在pandas dataframe的相邻两行之间插入对应列的均值行
Pandas相邻行均值计算方案
以下是可直接运行的优雅实现:
import pandas as pd import numpy as np # 示例数据集 df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c']) # 核心计算逻辑 # 计算相邻两行均值,将均值行索引调整为原索引中间值,方便后续排序 row_mean = df2.rolling(2).mean().dropna().set_axis(df2.index[:-1] + 0.5) # 合并原数据与均值行,按索引排序后重置连续索引 df2_mean = pd.concat([df2, row_mean]).sort_index().reset_index(drop=True)
运行后输出df2_mean即可得到目标结果:
a b c 0 1.0 2.0 3.0 1 2.5 3.5 4.5 2 4.0 5.0 6.0 3 5.5 6.5 7.5 4 7.0 8.0 9.0
方案逻辑说明
- 用
rolling(2).mean()做窗口大小为2的滑动均值计算,得到的结果中索引n对应原数据集第n-1行和第n行的均值 - 去掉首行空值后,调整均值行的索引为原相邻两行索引的中间值,保证合并后排序顺序符合预期
- 合并原数据集和均值行后按索引排序,重置为连续索引即可得到最终结果
内容的提问来源于stack exchange,提问作者Jason H
相关产品推荐
相关产品推荐

