python - 用转置版本填充矩阵

标签 python pandas numpy matrix dataframe

我有一个成对矩阵:

>>> m
     a    b    c   d
a  1.0  NaN  NaN NaN
b  0.5  1.0  NaN NaN
c  0.6  0.0  1.0 NaN
d  0.5  0.4  0.3 1.0

我想用与左下角相同的值替换右上角的 NaN:

>>> m2
     a    b    c    d
a  1.0  0.5  0.6  0.5
b  0.5  1.0  0.0  0.4
c  0.6  0.0  1.0  0.3
d  0.5  0.4  0.3  1.0

我可以通过交换列和索引来实现:

cols = m.columns
idxs = m.index

for c in cols:
    for i in idxs:
        m[i][c] = m[c][i]

但这对我的实际数据来说很慢,而且我确信有一种方法可以一步完成。我知道我可以用“m.T”生成右上角的版本,但我不知道如何用非 NaN 值替换 NaN 以获得完整的矩阵。在 numpy 中可能有一种单步方法可以做到这一点,但我不知道矩阵代数。

最佳答案

怎么样 ( docs ):

>>> df.combine_first(df.T)
     a    b    c    d
a  1.0  0.5  0.6  0.5
b  0.5  1.0  0.0  0.4
c  0.6  0.0  1.0  0.3
d  0.5  0.4  0.3  1.0

关于python - 用转置版本填充矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064544/

相关文章:

python - 如何对排行榜中的分数进行排序?

python - 使用索引值列表对 pandas 多索引数据帧进行切片

python - 如果可能的话,如何使用函数参数作为 npy 方法

python - 在 Python 中实现 PCA(基于特征向量)

python - ndarray 可以存储日期时间和 float 吗?

python - SQLAlchemy 自动加载插入记录

python - python 中的 4 维零数组

python - 如果 Firefox 有焦点,Selenium 只能登录到 Web 表单

python - 转换数据文件 'X' 'Y' 'Z' 'data' 格式

python - NaN 会干扰 pandas 中的列连接吗?