在python中从tsv构造矩阵

2024-07-02 10:06:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.tsv文件,看起来像这样:

A               B               C
SRX479927.bed   SRX821810.bed   0.258912
SRX032890.bed   SRX821809.bed   0.161135
SRX660083.bed   SRX821816.bed   0.00379202
SRX821817.bed   SRX821818.bed   0.0902696
SRX660084.bed   SRX479928.bed   0.2671
SRX821806.bed   SRX821811.bed   0.458604
SRX476926.bed   SRX821806.bed   0.0303042
SRX196107.bed   SRX414970.bed   0.221135

其中A和B是文件,C是这些文件相似性的索引。我试图用python构建一个矩阵,其中a在y轴上,B在x轴上,填充相应的值。我以前对具有2列(文件和值)的.tsv文件执行过此操作,但对于3列则无法成功。有人能提供一种解决方法吗? 如果以前有人问过这个问题,我很抱歉,但我只能找到关于如何从2列构造矩阵的问题


Tags: 文件tsv矩阵bedsrx821816srx660083srx821817srx660084
1条回答
网友
1楼 · 发布于 2024-07-02 10:06:39

您可以将其作为数据帧加载,然后将AB设置为索引,进行相应排序,然后取消对索引的堆叠:

matrix = df.set_index(['A', 'B'])['C'].sort_index().unstack()

如果您的数据不包含相似文件的相似性分数(即,将文件与自身进行比较),则可以手动添加这些分数。如果分数是对称的,并且只有矩阵的上三角形存在,则可以使用numpy.triu_indices来构造矩阵

相关问题 更多 >