2017-02-22 9 views
1

Я пытаюсь получить среднее из dataframe диагональной осисреднее значение по диагональной оси в панд

  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

Просто используйте 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])} 

Demo

>>> 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} 
Смежные вопросы