【发布时间】:2020-11-02 21:55:16
【问题描述】:
我想计算数据框各行之间的相似度。我有一些关于某些人的信息的专栏。一排是一个人。看起来是这样的:
print(df)
id name firstname email town age
0 1 martin pierre truc@machin.com Paris na
1 2 dupond sarah bidule@machin.com London 32
2 3 dupond sarah bidule@machin.com Berlin 32
3 4 dupond john na Madrid 45
4 5 smith na something@thing.com Paris 28
如果至少完成 3 列,我想为每一行计算与其他行共有的值的数量除以列的数量。 例如,在索引为 1 的行和索引为 2 的行之间,共有 4 个变量。所以,我的相似度将是 4/5(id 不计算在内)= 80% 的相似度。 我的结果必须是一个相似度矩阵,因为之后我想找到相似度高于 0.6 的行来构建一个新的数据框。 可能是这样的:
print(similarity)
0 1 2 3 4
0 1 0 0 0 0.2
1 0.2 1 0.8 0.2 0
2 0 0.8 1 0.2 0
3 0 0.2 0.2 1 0
4 0.2 0 0 0 1
因为结果是重复的,所以一半就足够了:
print(similarity)
0 1 2 3 4
0 0 0 0 0.2
1 0.8 0.2 0
2 0.2 0
3 0
4
我正在寻找一个可以自动执行此操作的函数,但我找不到。存在这样的东西吗? 感谢阅读,欢迎任何建议或想法。
【问题讨论】:
标签: python python-3.x pandas dataframe