如何将Pandas DataFrame行余弦相似度结果转为原格式DataFrame
如何将余弦相似度结果转换为原DataFrame格式?
没问题!你只需要利用原DataFrame里的ciiu4n4列来给余弦相似度结果数组设置索引和列名就行,完全不用手动处理,哪怕是600×600的大表也能一键搞定。具体步骤如下:
解决方案代码
import pandas as pd from sklearn.metrics.pairwise import cosine_similarity # 假设你的原DataFrame是mpg_data,已经计算得到余弦相似度结果result # 提取原DataFrame中的行业编码标签 labels = mpg_data['ciiu4n4'] # 将相似度数组转换为带标签的DataFrame similarity_df = pd.DataFrame(result, index=labels, columns=labels) # (可选)如果需要完全匹配原格式:将索引转为第一列并命名为ciiu4n4 similarity_df = similarity_df.reset_index().rename(columns={'index': 'ciiu4n4'})
代码解释
- 提取标签:
labels = mpg_data['ciiu4n4']从原DataFrame中取出行业编码列,确保后续的行和列都能和原数据一一对应。 - 构建相似度DataFrame:
pd.DataFrame(result, index=labels, columns=labels)直接用标签设置新DataFrame的行索引和列名,这样每一个相似度值都会对应正确的行业编码对。 - 匹配原格式(可选):如果需要和原DataFrame的结构完全一致(第一列是
ciiu4n4),通过reset_index()把索引转为普通列,再重命名为ciiu4n4即可。
效果验证
用你提供的小例子测试后,会得到完全符合你期望的结构:
| ciiu4n4 | A0111 | A0112 | A0113 |
|---|---|---|---|
| A0111 | 1.0 | 0.95357118 | 0.95814892 |
| A0112 | 0.95357118 | 1.0 | 0.89993795 |
| A0113 | 0.95814892 | 0.89993795 | 1.0 |
内容的提问来源于stack exchange,提问作者PAstudilloE
相关产品推荐
相关产品推荐

