python - Pandas 中对角轴的平均值

标签 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

如何实现这一目标?

最佳答案

只需使用 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}

关于python - Pandas 中对角轴的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42397872/

相关文章:

python - Flask-login 用户登录后设置为匿名

r - pandas 中的向量化按列正则表达式匹配

python - 透视/取消堆叠具有重复条目的 DataFrame,无需聚合

pandas - pandas 六个月的日期范围

python - 谷歌colab中的 Pandas 分析错误

python - 扭曲的 python ISFTPServer openDirectory

python - 如何通过碰撞检测阻止玩家 Sprite 穿过方 block ?

python - 读取包含 pandas 数据帧的 csv 文件时出现编码错误

Python Pandas 根据列的数据类型删除行

python - 基于过滤器的列计算?