假设我有两个不等长的三角形,df 1和df 2。
第一个框架df 1看起来像这样:
id | a | b | c | d
--------------------------
i1 | 1,2 | 0 | Nan | 3
i2 | 1 | 4 | 2 | 0,3
i3 | 0 | 1 | 2,3 | Nan
字符串
第二个框架df 2看起来像这样:
id | a | b | c | d
--------------------------
i5 | 0,3 | 1 | 2,4 | Nan
i2 | 1 | 4 | 2 | 0
i3 | 0 | 1 | 2,3 | Nan
i4 | 0 | 1 | 2,3 | Nan
i1 | 1 | 0 | Nan | 3
型
两个嵌套框具有相同的列名;a,b,c & d。它们可能在列id中具有相同的元素,但不一定具有相同的顺序。
现在,对于列id中的每个常见id号,我想比较所有列a,b,c和d的值并计算准确率百分比。
例如,让我们看看id号i1,在df 1中,列a中的值对于这个id号是1,2,但是在df 2中,具有相同的id号i1,列a中的值为1。因此缺少值2,因此准确度应该是50%左右.这将对每一列和每一行重复.如果id号在df 2中不存在df 1或相反,它应该被忽略.我想计算最终的准确率百分比,并能够可视化匹配的元素和不匹配的元素.
为了比较列a,我尝试了这样的方法:
new_df2 = df2[df2.id.isin(df1.id)]
acc = (df1.sort_values('id')['a'].reset_index()==new_df2.sort_values('id')['a'].reset_index()).mean()
型
我不确定这是否正确,或者这是否是最好的方法。有什么建议吗?
1条答案
按热度按时间vecaoik11#
您可以使用自定义函数来计算Jaccard index,将每个项目转换为
set
,对齐两个DataFrame并以矢量方式应用它:字符串
输出量:
型