将np.tril和np.triu堆叠在一起

时间:2019-07-07 15:41:51

标签: 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,
     NaN, 1, 0.6,
     NaN, NaN, 1]

我想要一个看起来像这样的东西:

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

谢谢!

1 个答案:

答案 0 :(得分:2)

使用DataFrame.fillna用另一个DataFrame替换缺失的值:

df = df1.fillna(df2)

或使用DataFrame.combine_first

df = df1.combine_first(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