Python 将np.tril和np.triu叠加在一起

Python 将np.tril和np.triu叠加在一起,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我有两个相关矩阵,一个下三角是NaN值,另一个上三角是'NaN'值 我想把它们叠加在一起,这样我就得到了一个具有相关系数的NxN矩阵 我尝试使用pd.concat(),但无法使其工作。我正在寻找一个更好的方法来做到这一点,因为我相信有一个 a=[1,NaN,NaN, 0.4,1,NaN, 0.7, 0.3, 1] b=[1,0.2,0.9,, 南,1,0.6, 楠,楠,1] 我想要这样的东西: c=[1,0.2,0.9, 0.4, 1, 0.6, 0.7, 0.3, 1] 谢谢 用于用另一个

我有两个相关矩阵,一个下三角是
NaN
值,另一个上三角是'NaN'值

我想把它们叠加在一起,这样我就得到了一个具有相关系数的NxN矩阵

我尝试使用
pd.concat()
,但无法使其工作。我正在寻找一个更好的方法来做到这一点,因为我相信有一个

a=[1,NaN,NaN,
0.4,1,NaN,
0.7, 0.3, 1]
b=[1,0.2,0.9,,
南,1,0.6,
楠,楠,1]
我想要这样的东西:

c=[1,0.2,0.9,
0.4, 1, 0.6,
0.7, 0.3, 1]
谢谢

用于用另一个数据帧替换缺少的值:

df = df1.fillna(df2)
或使用:

总而言之:

a = [1, np.nan, np.nan,
     0.4, 1, np.nan,
     0.7, 0.3, 1]

b = [1, 0.2, 0.9,
     np.nan, 1, 0.6,
     np.nan, np.nan, 1]

df1 = pd.DataFrame(np.asarray(a).reshape(3,3))
df2 = pd.DataFrame(np.asarray(b).reshape(3,3))

df = df1.fillna(df2)
print (df)
     0    1    2
0  1.0  0.2  0.9
1  0.4  1.0  0.6
2  0.7  0.3  1.0

如果您有
numpy
数组,您可以使用:
c=np.where(np.isnan(a),b,a)
在主题行中使用
np.tril
,会产生误导。该函数将元素块设置为0,而不是
nan
。使用0可以将两个数组添加到一起(尽管共享对角线会使事情复杂化)。
a = [1, np.nan, np.nan,
     0.4, 1, np.nan,
     0.7, 0.3, 1]

b = [1, 0.2, 0.9,
     np.nan, 1, 0.6,
     np.nan, np.nan, 1]

df1 = pd.DataFrame(np.asarray(a).reshape(3,3))
df2 = pd.DataFrame(np.asarray(b).reshape(3,3))

df = df1.fillna(df2)
print (df)
     0    1    2
0  1.0  0.2  0.9
1  0.4  1.0  0.6
2  0.7  0.3  1.0