pandas - 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'])]]
等等。
解决方案
我总是对在 Pandas 中迭代的最佳方式感到困惑。也许像矩阵减法?
result = df - ((df.sum(axis=0) - df)/(len(df) - 1))