繁体   English   中英

将 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

你可以pivotcombine_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM