首页 > 解决方案 > Pandas DataFrame 中的行平均差异

问题描述

给定一个熊猫数据框,最有效的方法是对滚动平均值进行逐行差异。即,如果我们有一个数据框:

np.random.seed(43)
df = pd.DataFrame(np.random.randint(0,10,size=(6, 4)), columns=list('ABCD'))

它生成了这样的数据框:

   A  B  C  D
0  4  0  1  5
1  0  3  1  2
2  7  0  3  2
3  9  1  2  2
4  3  5  4  4
5  0  5  8  0

那么预期的输出是:

row_diff[0] = [row[0]['A'] - mean(row[1:]['A']), row[0]['B'] - mean(row[1:]['B']), row[0]['C'] - mean(row[1:]['C']), [row[0]['D'] - mean(row[1:]['D'])]]

row_diff[1] = [row[1]['A'] - mean(row[2:]['A']+row[0]['A']), row[1]['B'] - mean(row[2:]['B']+row[0]['B']), row[1]['C'] - mean(row[2:]['C']+row[0]['C']), [row[0]['D'] - mean(row[2:]['D']+row[0]['D'])]]

等等。

标签: pandasnumpy

解决方案


我总是对在 Pandas 中迭代的最佳方式感到困惑。也许像矩阵减法?

result = df - ((df.sum(axis=0) - df)/(len(df) - 1))

推荐阅读