如何解决重新排序 numpy 矩阵以与数据帧中的 id 对齐
我有一个数据框 df,其中有一个名为 id 的列,其中每个值都是唯一的。
df
id name
A abc
B bcv
C dsf
D ere
E pmn
我将这组唯一的 id 传递给一个函数。该函数返回两件事,一个是数据帧,df_matrix,它还包含一个名为 id 的列。它返回的第二件事是协方差矩阵(float64 数组)。
df_matrix
id name
C dsf
A abc
E pmn
B bcv
df_matrix 中的每个 id 都在 df 中,但反之则不然。所以在上面的例子中,df 有一个 id“D”,它不在 df_matrix 中。你也会注意到顺序不同
covariance matrix
C A E B
C 1 2 3 4
A 2 5 7 8
E 3 7 9 10
B 4 8 10 11
我需要做的是对协方差矩阵重新排序,以便 id 与我的数据帧 df 对齐,并且还要考虑任何丢失的 id。
我正在寻找的输出是,
A B C D E
A 5 8 2 NaN 7
B 8 11 4 NaN 10
C 2 4 1 NaN 3
D NaN NaN NaN NaN Nan
E 7 10 3 NaN 9
我尝试将矩阵与数据框合并,虽然这将矩阵行与数据框对齐,但它不会调整矩阵的列。我不确定实现这一目标的最佳方法是什么?
解决方法
这是reindex
:
cov_mat.reindex(df['id']).reindex(df['id'],axis=1)
输出:
id A B C D E
id
A 5.0 8.0 2.0 NaN 7.0
B 8.0 11.0 4.0 NaN 10.0
C 2.0 4.0 1.0 NaN 3.0
D NaN NaN NaN NaN NaN
E 7.0 10.0 3.0 NaN 9.0
更新您还可以将id
设置为df2
的索引,然后在计算协方差矩阵之前重新索引为df1['id']
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。