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