我试图从对角轴的数据框中得到平均值
2015-08-31 2015-09-30 2015-10-31 2015-11-30 2015-12-31 \
createdat
2015-08-31 1.333333 12.555556 10.444444 5.888889 5.888889
2015-09-30 0.000000 6.777778 4.111111 1.000000 5.333333
2015-10-31 0.000000 0.000000 5.000000 12.312500 9.937500
2015-11-30 0.000000 0.000000 0.000000 1.909091 14.000000
2015-12-31 0.000000 0.000000 0.000000 0.000000 6.760000
所以实际上我想得到平均值1.333333 + 6.777778 + 5.000000 +1.909091
以及随后的平均值12.555556 + 4.111111 + 12.312500
我如何实现这一目标?
答案 0 :(得分:1)
只需使用np.diag
即可。对于主对角线,这只是
np.diag(df).mean()
您可以使用k
参数在主对角线的上方或下方移动。
如果您决心说出所有主要对角线,您可以采用相同的方法,例如
{i: np.diag(df, i).mean() for i in range(-1*(df.shape[0]-1), df.shape[1])}
<强>演示强>
>>> df
0 1 2
0 6 1 7
1 4 9 8
2 0 3 9
>>> np.diag(df).mean()
8.0
>>> np.diag(df, k=1).mean()
4.5
>>> {i: np.diag(df, i).mean() for i in range(-1*(df.shape[0]-1), df.shape[1])}
{-2: 0.0, -1: 3.5, 0: 8.0, 1: 4.5, 2: 7.0}