Pandas中的对角线轴均值

时间:2017-02-22 17:03:57

标签: python pandas data-analysis

我试图从对角轴的数据框中得到平均值

            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

我如何实现这一目标?

1 个答案:

答案 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}