我有一个成对矩阵:
>>> 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 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.combine_first.html):
>>> 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)