[英]Convert BioPython.Phylo distance matrix to pandas dataframe
[英]Convert pandas dataframe to distance matrix
我有一个 pandas dataframe,名称之间的距离如下:
姓名1 | 名字2 | 距离 |
---|---|---|
彼得 | 约翰 | 3.4 |
约翰 | 詹姆士 | 2.3 |
詹姆士 | 彼得 | 1.4 |
我需要将它转换成这样的距离矩阵。 (具有相同名称(始终为 0)的距离不在原始数据框中):
矩阵 | 约翰 | 彼得 | 詹姆士 |
---|---|---|---|
约翰 | 0 | 3.4 | 2.3 |
彼得 | 3.4 | 0 | 1.4 |
詹姆士 | 2.3 | 1.4 | 0 |
有什么帮助吗?
谢谢!
这是使用 pivot 的一种方法:
df1 = df.pivot(index = 'name1', columns = 'name2', values='distance').fillna(0)
df2 = df.pivot(index = 'name2', columns = 'name1', values='distance').fillna(df1)
df2
output:
>>>
name1 James John Peter
name2
James 0.0 2.3 1.4
John 2.3 0.0 3.4
Peter 1.4 3.4 0.0
你可以pivot
和combine_first
与它自己的转置:
df2 = df.pivot(index='name1', columns='name2', values='distance')
df2 = df2.combine_first(df2.T).fillna(0)
Output:
James John Peter
name1
James 0.0 2.3 1.4
John 2.3 0.0 3.4
Peter 1.4 3.4 0.0
作为管道:
df2 = (df
.pivot(index='name1', columns='name2', values='distance')
.pipe(lambda d: d.combine_first(d.T))
.fillna(0)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.